2月4日(水)3コマ目

今日、やったこと

  • 同一オリジンポリシー
  • CORS(Cross Origin Resource Sharing)
  • プリフライトリクエスト
  • CSRF(Cross Site Request Forgeries)

 今日のホワイトボード

今日も今日とて、日がな一日座学でした。

眠いし、つまらんし。

同一オリジンポリシー

前回終盤にちょこっと解説。

ダウンロードしたコンテンツ(HTMLやJavaScript、cssなど)から、ダウンロード元と異なるサイト(クロスオリジン)へのアクセスを制限する仕組み

実際は、リクエストは送信されるが、レスポンスの受け取りをブラウザが拒否する


同一オリジンポリシーの例外

同一オリジンポリシーに従うと、クロスサイトの画像を表示できないように思える。

が、これは例外扱い。画像の埋め込みやcss、JavaScriptファイルの埋め込みはできる。

図 埋め込み系は同一オリジンポリシーによる制限の例外

CORS(Cross Origin Resource Sharing)

まったく悪意が無い場合、この同一オリジンポリシーはかえって問題。

悪意のないサイトのページ内で、悪意のないサイトのサービスを利用したくてもできない。

そこで、同一オリジンポリシーの制限(クロスオリジンからのレスポンスを受け取らない)を緩める仕組みがCORS(Cross Origin Resource Sharing)。

図 CORS

クロスオリジンからのレスポンスの中に、

 Access-Control-Allow-Origen:ドメイン名

が含まれていたら、ブラウザはレスポンスを受け取る。


プリフライトリクエスト

同一オリジンポリシーはまだつづく。

クロスオリジンからのレスポンスは受け取らないが、リクエスト自体はしてしまう。

図 クロスサイトにリクエストはしてしまう

リクエスト自体に悪意がある場合、問題。

そこで、リクエストを送信する前に、プリフライトリクエストを送信。

プリフライトリクエストを受信したサーバーは

 Access-Control-Allow-Origin

を送信する。クライアント(Webブラウザ)はダウンロード元がリクエスト先に許可されているか確認してリクエスト送信する。


CSRF(Cross Site Request Forgeries)

リクエスト先とCookieのDomain属性が一致すれば、リクエスト時にCookieを送信する仕組みを悪用した攻撃手法。

図 CSRF
最近のWebブラウザにはCookieのSameSite属性が使えるようになっている。
デフォルトの設定は、たとえCookieのDomain属性とリクエスト先が一致しても、GETコマンドの時しか送信しない。

次回は

クロスサイトスクリプティング(XSS)。
まだまだ、座学はつづく。



このブログの人気の投稿

1月13日(火)3コマ目

2月2日(月)4コマ目

2月10日(火)3コマ目