Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 15053] ファイルの概要

このコミットは、Go言語の実験的なexp/cookiejarパッケージ内のjar.goファイルにおけるドキュメントコメントの更新に関するものです。具体的には、PublicSuffixListのドキュメントコメントに含まれる例が、Public Suffix Listの公式ウェブサイトの変更に合わせて修正されました。

コミット

commit 6799b773ebbd53c2c6d3d36e5b58e6efd0f4dc80
Author: Nigel Tao <nigeltao@golang.org>
Date:   Thu Jan 31 14:12:43 2013 +1100

    exp/cookiejar: update PublicSuffixList doc comment to match the
    examples at http://publicsuffix.org/.
    
    That website previously listed pvt.k12.wy.us, but that was an error,
    as confirmed by correspondance with submissions@publicsuffix.org, and
    the website was fixed on 2013-01-23.
    
    R=adg
    CC=dr.volker.dobler, golang-dev
    https://golang.org/cl/7241053

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/6799b773ebbd53c2c6d3d36e5b58e6efd0f4dc80

元コミット内容

このコミットは、exp/cookiejarパッケージのPublicSuffixListのドキュメントコメントを更新し、http://publicsuffix.org/の例と一致させることを目的としています。

以前、publicsuffix.orgのウェブサイトにはpvt.k12.wy.usが例として記載されていましたが、これは誤りであることがsubmissions@publicsuffix.orgとのやり取りで確認され、2013年1月23日にウェブサイトが修正されました。このコミットは、その修正を反映したものです。

変更の背景

この変更の背景には、Public Suffix List (PSL) の公式ウェブサイトであるpublicsuffix.orgにおける情報の修正があります。PSLは、ドメイン名の「パブリックサフィックス」を定義するリストであり、ウェブブラウザやその他のアプリケーションがクッキーのセキュリティやドメインの有効性を判断する際に非常に重要です。

Go言語のexp/cookiejarパッケージは、HTTPクッキーの管理を扱うための実験的な実装であり、その中でPSLの概念を利用しています。PublicSuffixListインターフェースのドキュメントコメントには、PSLの動作を説明するための例が含まれていました。

しかし、その例の一つであるpvt.k12.wy.usが、実際にはPSLの誤ったエントリであったことが判明しました。これは、publicsuffix.orgの管理チームとのやり取りを通じて確認され、公式ウェブサイト自体が2013年1月23日に修正されました。

このコミットは、Goのドキュメントが最新かつ正確な情報を提供し続けるために、公式ウェブサイトの修正に追従して、誤った例を正しい例に更新することを目的としています。これにより、開発者がPublicSuffixListの概念を理解する際に、誤解を招く情報に触れることを防ぎます。

前提知識の解説

Public Suffix List (PSL)

Public Suffix List (PSL) は、インターネット上のドメイン名における「パブリックサフィックス」を定義するリストです。パブリックサフィックスとは、組織がドメイン名を登録できるドメインの最上位部分を指します。例えば、.com.co.uk.jpなどがこれに該当します。

PSLの主な目的は、セキュリティとプライバシーの向上です。特に、ウェブブラウザがクッキーを設定する際に、悪意のあるウェブサイトが他のドメインのクッキーを盗んだり、ユーザーを追跡したりするのを防ぐために使用されます。

PSLが解決する問題の例:

  • クッキーのセキュリティ: example.comというドメインのウェブサイトが、sub.example.comというサブドメインに対してクッキーを設定することは一般的です。しかし、もしexample.comがパブリックサフィックスであった場合、attacker.example.comという悪意のあるサイトがexample.com全体にクッキーを設定し、他のサブドメインのクッキーを読み取ることができてしまう可能性があります。PSLは、comがパブリックサフィックスであり、example.comはそうではないことを明確にすることで、このような攻撃を防ぎます。
  • ドメインの有効性判断: PSLは、ドメイン名が有効な登録可能なドメインであるかどうかを判断するのにも役立ちます。

PSLは、Mozillaによって管理されており、世界中の様々なトップレベルドメイン (TLD) やセカンドレベルドメイン (SLD) の情報が含まれています。リストは定期的に更新され、新しいドメインや変更が反映されます。

Go言語のexp/cookiejarパッケージ

exp/cookiejarは、Go言語の標準ライブラリの一部として提供されている、HTTPクッキーを管理するための実験的なパッケージです。このパッケージは、HTTPリクエストとレスポンス間でクッキーの状態を維持し、セッション管理や認証などの機能を実現するために使用されます。

このパッケージの重要な機能の一つが、PSLを利用したクッキーのドメイン制限です。cookiejarは、PSLを参照して、クッキーが設定されるドメインがパブリックサフィックスではないことを確認します。これにより、セキュリティ上の脆弱性を防ぎ、クッキーが意図しない範囲で共有されることを防ぎます。

expというプレフィックスは、このパッケージがまだ実験段階であり、APIが将来変更される可能性があることを示しています。しかし、その基本的な機能とPSLの利用方法は、Go言語におけるセキュアなHTTP通信の実現において重要な役割を果たしています。

技術的詳細

このコミットは、Go言語のexp/cookiejarパッケージ内のjar.goファイルにあるPublicSuffixListインターフェースのドキュメントコメントを修正しています。

jar.goファイルは、http.CookieJarインターフェースの実装を提供し、HTTPクッキーの保存と取得を管理します。この実装は、クッキーのセキュリティとプライバシーを確保するために、Public Suffix List (PSL) の概念を利用しています。

PublicSuffixListインターフェースは、与えられたドメインのパブリックサフィックスを返すメソッドを定義しています。このインターフェースのドキュメントコメントは、その機能と期待される振る舞いを説明するための例を含んでいます。

変更前のドキュメントコメントでは、bar.pvt.k12.wy.usのパブリックサフィックスがpvt.k12.wy.usであると例示されていました。しかし、これはPublic Suffix Listの公式ウェブサイトで誤って記載されていた情報に基づいています。pvt.k12.wy.usは、実際にはワイオミング州のK-12教育機関に関連するドメインの一部であり、PSLのルール上、パブリックサフィックスとして扱われるべきではありませんでした。

publicsuffix.orgの管理チームとのやり取りの結果、この誤りが確認され、2013年1月23日に公式リストからpvt.k12.wy.usが削除されました。

このコミットは、この公式リストの修正に追従し、ドキュメントコメントの例をbar.pvt.k12.ma.usに変更しました。ここで、pvt.k12.ma.usはマサチューセッツ州のK-12教育機関に関連するドメインであり、PSLのルールに従ってパブリックサフィックスとして扱われるべきではないドメインの例として適切です。この変更により、GoのドキュメントがPSLの最新かつ正確な情報と一致するようになりました。

この修正は、コードの動作には影響を与えませんが、ドキュメントの正確性を保つ上で重要です。特に、PSLのようなセキュリティに直結する概念においては、正確な情報提供が開発者の誤解を防ぎ、よりセキュアなアプリケーション開発を促進します。

コアとなるコードの変更箇所

変更はsrc/pkg/exp/cookiejar/jar.goファイルの一箇所のみです。

--- a/src/pkg/exp/cookiejar/jar.go
+++ b/src/pkg/exp/cookiejar/jar.go
@@ -16,7 +16,7 @@ import (
 // PublicSuffixList provides the public suffix of a domain. For example:
 //      - the public suffix of "example.com" is "com",
 //      - the public suffix of "foo1.foo2.foo3.co.uk" is "co.uk", and
-//      - the public suffix of "bar.pvt.k12.wy.us" is "pvt.k12.wy.us".
+//      - the public suffix of "bar.pvt.k12.ma.us" is "pvt.k12.ma.us".
 //
 // Implementations of PublicSuffixList must be safe for concurrent use by
 // multiple goroutines.

コアとなるコードの解説

変更された行は、PublicSuffixListインターフェースのドキュメントコメントの一部です。

元の行: // - the public suffix of "bar.pvt.k12.wy.us" is "pvt.k12.wy.us".

変更後の行: // - the public suffix of "bar.pvt.k12.ma.us" is "pvt.k12.ma.us".

この変更は、bar.pvt.k12.wy.usというドメインの例をbar.pvt.k12.ma.usに変更しています。これは、publicsuffix.orgのウェブサイトでpvt.k12.wy.usが誤ってパブリックサフィックスとしてリストされていた問題が修正されたことに対応するものです。

このドキュメントコメントは、PublicSuffixListインターフェースの目的と、それがどのように機能するかを説明するためのものです。このインターフェースは、与えられたドメイン名からそのパブリックサフィックスを抽出する機能を提供します。例えば、example.comのパブリックサフィックスはcomであり、foo1.foo2.foo3.co.ukのパブリックサフィックスはco.ukです。

この例の修正は、コードの実行には全く影響を与えません。これは純粋にドキュメントの正確性を向上させるための変更であり、開発者がPublicSuffixListの概念を理解する際に、最新かつ正確な情報に基づいた例を参照できるようにすることを目的としています。

関連リンク

参考にした情報源リンク