[メモ]体系的に学ぶ 安全なWebアプリケーションの作り方


体系的に学ぶ 安全なWebアプリケーションの作り方を読んだメモ

XSS

  • 悪意のあるサイトにリダイレクトして重要情報を入力させる
  • スクリプトを埋め込んで重要情報をURLに引き継いで悪意のあるサイトに遷移する

対策

  • エスケープする
  • JSで文字列を動的に生成するときも注意。JSでエスケープするか、hidden要素などでHTML側でエスケープしておいた要素を使用する

SQLインジェクション

対策

  • プレースホルダーを使用する
  • Like検索ではワイルドカードをエスケープする
  • 攻撃者に情報を与えないためにエラーメッセージを抑制する
  • 攻撃の被害を抑えるためにデータベースの権限を最低限にする

CSRF

  • 悪意のあるサイトにアクセス → ifameから正規のサイトへPOST → ログイン状態の場合セッションIDがつくのでPOSTできてしまう
  • 確認画面があるようなサイトでもifameの数を増やし、時差でアクセスすることで攻撃可能
  • 内部ネットワークでもルーターなどを管理者情報を持った端末が罠サイトを踏むとパスワードなど変更される恐れがある

対策

  • 購入、変更など重要ページでは再度パスワードを入力してもらう -実行直前のページに攻撃者が予測できないトークを入れて実行画面で確かめる
  • リファラーのチェック(自サイトからになっているか)

セッションハイジャック

  • セッション情報をURLに埋め込んでいるとサイトから別サイトに遷移した時にリファラーで漏洩する

オープンリダイレクタ脆弱性

実装でリダイレクト先のURLを外部から指定できる場合に発生
- 罠サイトにリダイレクトされる
- 配布サイトでマルウェアを配布されるなど

対策

  • リダイレクト先のドメインチェックをする
  • クッションページを挟む(あなたは...にアクセスしようとしています)

メールヘッダーインジェクション

  • webサイトのフォームなどから意図しない相手にメール送付される
  • 本文を改ざんされる

対策

  • 改行を含まないようにする
  • 外部からのパラメーターを含ませない

ファイルダウンロードによるxss

  • jsファイルをhtmlと認識させユーザーのブラウザーで実行させる

対策

  • content typeを設定するなど