Webアプリのクライアント側攻撃対策
クライアント側攻撃は、攻撃者が利用者のブラウザ上で動作する処理や、利用者の操作そのものを悪用する攻撃の総称である。代表的なものは、利用者の意図しないリクエストを送らせるCSRF、Webページにスクリプトを埋め込むXSS、透明な画面を重ねて誤操作を誘うクリックジャッキングである。これらは、サーバ側で行う入力・出力の検証と、ブラウザが備える防御の仕組みを組み合わせて防ぐ。
CSRFの仕組みと有効な対策
CSRFは、ログイン中の利用者のブラウザに、利用者の意図しないリクエストを送信させる攻撃である。ブラウザは正規サイトへのリクエストにCookieを自動的に添付するため、利用者が攻撃者のページを開くだけで、正規サイトへの操作が成立してしまう。
対策の基本は、リクエストが正規の画面から発生したものであることを確認することである。サーバが発行した予測困難なトークンをリクエストごとに照合する方法は、CSRFトークンによる代表的な対策である。 Refererヘッダでリンク元を検査する方法も有効であるが、Refererが送信されない場合への考慮が必要である。
重要な操作の都度パスワードを再入力させる方法も、利用者の意図しない操作を防ぐ効果がある。 状態を変える処理をGETリクエストで実行しない設計も、リクエストの発生源を区別しやすくする考え方として重要である。
効果のない対策の見極め
CSRF対策として挙げられることがある特殊文字のエスケープ処理は、Webページへの不正なスクリプトの埋め込みを防ぐXSS対策である。正規のリクエストかどうかを確認しない限り、この処理だけでは利用者の意図しないリクエストを防げない。
同じ種類の文字列処理でも、対策が対象とする攻撃を取り違えないことが重要である。どの攻撃に対する対策かは、攻撃者が何を利用者のブラウザや画面に送り込み、何を実行させようとしているかで判断する。
XSSの種類と出力時の対策
XSSは、Webページに悪意のあるスクリプトを埋め込み、閲覧した利用者のブラウザ上で実行させる攻撃である。スクリプトが保存されて後から表示される格納型、リクエストに含まれたスクリプトが応答に反映される反射型、ブラウザ側の処理で発生するDOM Based XSSに分類される。
XSSでは、スクリプトによって利用者のCookieや入力情報を取得し、攻撃者の用意した先へ送信させる手口が問われる。 情報の送信先は攻撃者の管理下にあるため、被害は閲覧者のセッションや個人情報に及ぶ。
この節の続き
- クリックジャッキングと防御ヘッダ
- 混同しやすい属性とヘッダ
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む