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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for carotene4035 carotene4035
July 29, 2018
1k

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

Avatar for carotene4035

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