Upgrade to Pro — share decks privately, control downloads, hide ads and more …

同一オリジンポリシーとCORS

carotene4035
July 29, 2018
770

 同一オリジンポリシーとCORS

carotene4035

July 29, 2018
Tweet

Transcript

  1. あたまのわるいまとめ •  いろんなこうげきほうほうがあるね   –  またないでこっちからいくやつ   –  わなをしかけてまつやつ  

    •  どうすればこうげきをふせげるんだろうね   –  サーバ、ブラウザどっちもたいさくがいる   •  サーバがわはつぎのしょうで   •  ブラウザがわは「できることをせいげん」   –  どういつオリジンポリシー
  2. 能動的攻撃と受動的攻撃 •  正規サイトへの罠の仕込み方   – コンテンツ書き換え   •  FTPパスワード入手   • 

    Webサーバの脆弱性をつく   •  SQLインジェクション   •  クロスサイトスクリプティング脆弱性  
  3. 同一オリジンである条件 •  3条件   –  URLのホストが一致している   –  スキーム(プロトコル)が一致している  

    –  ポート番号が一致している   •  Cookieはスキームとポート関係ないから緩め   •  ただし、JavaScirptはディレクトリ関係ない  
  4. [コラム]第三者のJavaScriptを許可 •  サイト運営者が第三者を信頼して実行する   –  アクセス解析、バナー広告、ブログパーツなど   •  実際には以下のような問題が発生している  

    –  提供元が意図的に個人情報を収集する   –  提供元サーバに脆弱性があり、JSが差し替えられる   –  提供元のJSに脆弱性があり、別のスクリプトが実行される    
  5. ほかのクロスドメインアクセス •  <frame>,  <iframe>   •  <img>   •  <script>

      •  <link  type=‘text/stylesheet’>   •  <form  ac^on=’’>  
  6. ほかのクロスドメインアクセス •  <css>   –  クロスドメイン読み込み可能(よく使う)   •  Link  

    •  @import   •  addImport(JSのメソッド)   –  ただし、過去にCSSXSSという脆弱性がIEに存在した  
  7. CORSとは •  Cross-­‐Origin  Resource  Sharing   •  越えられない壁(Originの壁)をこえる仕様   • 

    なんでもかんでも超えられるようにすると   危ないから仕様にしてる  
  8. シンプルなリクエスト  #とは   •  以下の3つの条件がある   – メソッドの条件   •  GET

     or  HEAD  or  POST   – XMLHMpRequestのヘッダの条件   – Content−Typeヘッダの条件  
  9. シンプルなリクエスト  #とは   •  以下の3つの条件がある   –  メソッドの条件   – 

    XMLHMpRequestのヘッダの条件   •  Accept   •  Accept-­‐Language   •  Content-­‐Language   •  Content-­‐Type   –  Content−Typeヘッダの条件  
  10. シンプルなリクエスト  #とは   •  以下の3つの条件がある   – メソッドの条件   – XMLHMpRequestのヘッダの条件  

    – Content−Typeヘッダの条件   •  applica^on/x-­‐www-­‐form-­‐urlencoded   •  mul^part/form-­‐data   •  text/plain  
  11. まとめ •  クッキーなど認証用のヘッダを伴う   クロスオリジンアクセスは、   以下の両方を満たす必要がある     – 

    XMLHMpRequestオブジェクトの   withCreden^alsプロパティをtrueに   –  レスポンスヘッダに   Access-­‐Control-­‐Allow-­‐Creden^als:  true