<p>同一オリジンポリシーのイメージをつかむためのサンプル</p>
<p>同一オリジンとなるポイントはURLのスキーム(この例ではhttps)、ホスト(この例ではexample.com)、ポート(この例では80)が一致していること。</p>
<pre class="wp-block-preformatted"># 比較対象となるURI
$uri1 = "https://example.com:80/path/index.html"
$uri2 = "https://example.com:80/path/subdir/index.html"
# URIオブジェクトに変換
$uriObj1 = New-Object System.Uri($uri1)
$uriObj2 = New-Object System.Uri($uri2)
Write-Output $uriObj1.Scheme $uriObj2.Scheme
Write-Output $uriObj1.Host $uriObj2.Host
Write-Output $uriObj1.Port $uriObj2.Port
# 同一オリジンのチェック
if ($uriObj1.Scheme -eq $uriObj2.Scheme -and `
$uriObj1.Host -eq $uriObj2.Host -and `
$uriObj1.Port -eq $uriObj2.Port) {
Write-Output "同一オリジンです"
} else {
Write-Output "異なるオリジンです"
}
</pre>
<h2 class="wp-block-heading">Origin (オリジン)</h2>
<p>ウェブコンテンツの<strong>オリジン</strong> (Origin) は、ウェブコンテンツにアクセスするために使われる <a href="https://developer.mozilla.org/ja/docs/Glossary/URL">URL</a> の <em>スキーム</em> (プロトコル)、 <em>ホスト</em> (ドメイン)、 <em>ポート番号</em> によって定義されます。スキーム、ホスト、ポート番号がすべて一致した場合のみ、 2 つのオブジェクトは同じオリジンであると言えます。</p>
<p><a href="https://developer.mozilla.org/ja/docs/Glossary/Origin">Origin (オリジン) – MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN (mozilla.org)</a></p>
<h2 class="wp-block-heading">同一オリジンポリシー</h2>
<p><strong>同一オリジンポリシー</strong>は重要なセキュリティの仕組みであり、ある<a href="https://developer.mozilla.org/ja/docs/Glossary/Origin">オリジン</a>によって読み込まれた文書やスクリプトが、他のオリジンにあるリソースにアクセスできる方法を制限するものです。</p>
<p>これにより、悪意のある可能性のあるドキュメントを隔離し、起こりうる攻撃のベクターを減らすことができます。例えば、インターネット上の悪意のあるウェブサイトがブラウザー内で JS を実行して、 (ユーザーがサインインしている) サードパーティのウェブメールサービスや (公開 IP アドレスを持たないことで攻撃者の直接アクセスから保護されている) 企業のイントラネットからデータを読み取り、そのデータを攻撃者に中継することを防ぎます。</p>
<p><a href="https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy">同一オリジンポリシー – ウェブセキュリティ | MDN (mozilla.org)</a></p>
同一オリジンポリシーのイメージをつかむためのサンプル
同一オリジンとなるポイントはURLのスキーム(この例ではhttps)、ホスト(この例ではexample.com)、ポート(この例では80)が一致していること。
# 比較対象となるURI
$uri1 = "https://example.com:80/path/index.html"
$uri2 = "https://example.com:80/path/subdir/index.html"
# URIオブジェクトに変換
$uriObj1 = New-Object System.Uri($uri1)
$uriObj2 = New-Object System.Uri($uri2)
Write-Output $uriObj1.Scheme $uriObj2.Scheme
Write-Output $uriObj1.Host $uriObj2.Host
Write-Output $uriObj1.Port $uriObj2.Port
# 同一オリジンのチェック
if ($uriObj1.Scheme -eq $uriObj2.Scheme -and `
$uriObj1.Host -eq $uriObj2.Host -and `
$uriObj1.Port -eq $uriObj2.Port) {
Write-Output "同一オリジンです"
} else {
Write-Output "異なるオリジンです"
}
Origin (オリジン)
ウェブコンテンツのオリジン (Origin) は、ウェブコンテンツにアクセスするために使われる URL の スキーム (プロトコル)、 ホスト (ドメイン)、 ポート番号 によって定義されます。スキーム、ホスト、ポート番号がすべて一致した場合のみ、 2 つのオブジェクトは同じオリジンであると言えます。
Origin (オリジン) – MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN (mozilla.org)
同一オリジンポリシー
同一オリジンポリシーは重要なセキュリティの仕組みであり、あるオリジンによって読み込まれた文書やスクリプトが、他のオリジンにあるリソースにアクセスできる方法を制限するものです。
これにより、悪意のある可能性のあるドキュメントを隔離し、起こりうる攻撃のベクターを減らすことができます。例えば、インターネット上の悪意のあるウェブサイトがブラウザー内で JS を実行して、 (ユーザーがサインインしている) サードパーティのウェブメールサービスや (公開 IP アドレスを持たないことで攻撃者の直接アクセスから保護されている) 企業のイントラネットからデータを読み取り、そのデータを攻撃者に中継することを防ぎます。
同一オリジンポリシー – ウェブセキュリティ | MDN (mozilla.org)
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント