http://d.hatena.ne.jp/cybert/20060831/1157031516
に一覧ありますが、これ以外にもあるのでしょうか?
簡潔かつ適度に詳しいページを探しています。
質問者の中でサニタイズという言葉が一人歩きしていると思います。闇雲にサニタイズと言って、これをやっておけば大丈夫!みたいなのは一番困ります。
普通、そのデータが使われる場所も考えずに入力データに対して一括で変な処理を行うべきではないからです。
基本的にやるべきことは以下を常に心がけるだけです。
・出力部分で適切にエスケープ(urlencode、htmlspecialchars)する
・入力値を直接SQLに使わない→出来るだけプレースホルダを使う
・入力値を直接system関数などに使わない→必ずエスケープ(escapeshellarg)する。
・入力値をevalしない。
以下のURLで語られている高木さんの記事に関する話を上位だけでも読んでみてください。
「サニタイズ(sanitize)とは「消毒する」という意味です。
ソフトウェア開発においては、入力されたデータに“毒”があるという前提で、データを移動/出力する際に“消毒”する手法を指します。したがって、ブラックボックステストにおけるすべての「悪意のあるテストケース」を通さないような仕組みを実装しなければなりません。
ところが、これが簡単なことではありません。
おそらく「簡潔かつ適度に詳しいページ」は存在しないでしょう。もし、そういうページが見つかったとしても、それに頼ってサニタイズ処理することはお勧めできません。
なぜなら、アタッカーもそのページを見ており、その裏をかくような攻撃を仕掛けてくるからです。
質問の主旨から外れるようで申し訳ありませんが、むしろ入力時のバリデーション処理に注力した方がよいと思います。バリデーションの方が機能が少なくてすみます。
「Struts2のValidation」が基本要件を網羅しています。
コメント(1件)