サニタイズの見落とし
無効化については理解していても、意外なところでうっかりと見落としをしてしまうことがあります。中でもよくやってしまうのは「テキスト以外の情報」の見落としです。
サーバサイドJava入門 ログイン処理とサイト攻撃対策の基礎 (3/3):CodeZine(コードジン)
として、記事ではラジオボタンを使った XSS の例を取り上げている。
おぉ、これは見落としていた。確かにこうすれば攻撃を受けてしまうね…。
偽装されたパラメータをクエリー文字として送信すれば、ラジオボタンだろうがチェックボックスだろうが危険な値を送り込めることになります。ラジオボタンの値も無効化しておくべきなのです。基本的に、送信された値を直接出力に利用する場合は、どんなものであれ、すべて無効化を行う、と考えましょう。
サーバサイドJava入門 ログイン処理とサイト攻撃対策の基礎 (3/3):CodeZine(コードジン)
なるほど。気をつけなくては。記事にあるようなラジオボタンの value 属性をそのまま出力に利用するようなコードは書いたことがなかったのが不幸中の幸い。