★パターン1:
◆攻撃内容
・悪意のあるスクリプト(JavaScriptやVBScript)を攻撃対象サイトに埋め込む事で、第三者に実行させてしまう。
◆攻撃例
・リダイレクトさせてウイルスに感染させるように誘導する
・クッキーの漏洩
・自動POSTさせてCSRF攻撃の前段としてしまう
等々、JavaScriptで可能な様々な攻撃方法が想定される
◆攻撃結果
悪意のあるスクリプトを埋めこまれたサイトを第三者がアクセスした場合、
不特定多数の第三者に被害が及んでしまう。
◆対策方法
・サニタイズ
今回の問題は、ユーザーが入力した値がそのまま出力される事に問題があります。(「<」などの文字が)
よって文字列を出力する際にサニタイズ(無毒化)しておきます。
//$output_string ・・・ 出力文字列
$output_string = htmlspecialchars($output_string, ENT_QUOTES);
・外部入力データの明示的な型変換
数値で受け取るデータは変数格納時に数値型と明示的に指定。
$num = intval($_POST[‘num’]);
・DBの格納先フィールドの型を明示的に指定
数値型指定や、文字列型の文字制限をするなど。
コメント