状況
現在問い合わせフォームを作成しています。
XSSの対策として下記ラッパー関数を使用し、
入力時及び$_POSTの入力内容(正規表現確認やリンク確認含め)のチェックを行い、
対策を実施しています。
PHP
1function htmlS($var) { 2 return htmlspecialchars($var, ENT_QUOTES, 'UTF-8'); 3}
入力フォーム
html
1<input name="Name" id="Name" size="10" maxlength="20" type="text" value="<?=htmlS('Name');?>"/> 2
入力確認抜粋
php
1if(CHECK_REFERER == "" or $_SERVER["HTTP_REFERER"] == URL_ACTION){ 2$vali = new Validation(); 3// 名前 4$io->set_parameter("Name", mb_convert_kana($io->get_param("Name"), "KV", INNER_CODE)); 5if(!$vali->isDW_Kanji($io->htmlS("Name"), true, 90, 0, "UTF-8")){ 6 $io->set_error("Name_error", "未入力、または内容に誤りが有ります"); 7 } 8}
しかしセキュリティ教育担当者に
「XSS対策としてユーザーが追加したパラメータは処理しないようにしたい」
と言われました。
実際に教育担当者がテスト時(ペネトレ?)に入力画面で下記コードを追加したら
JSアラートが発生したとのことでした。
html
1<input type="hidden" name="" ><script>alert("XSS対策")</script>
質問
ここで質問ですが、教育担当者からの要望を満たすには
どのように確認をすればいいのでしょうか?
$_POSTのパラメータがこちらが指定したものと
正しいものか判断すればいいのかとも思いましたが、
$_POSTのパラメータの正誤の判断はできるのでしょうか?
XSS対策等調べてましたが明確な答えに
辿り付けなかったため質問させていただきます。
ご教授いただけます様お願い致します。