この質問が何度も聞かれていることは知っていますが、私の好みにぴったりの答えがまだ見つからないので、ここでもう一度言います...
CI の xss_filter に関する二極化したコメントをたくさん読んできました。基本的に大多数が悪いと言っています。誰かがそれがどのように悪いのかを詳しく説明できますか、または少なくともそれが悪用される可能性が最も高いシナリオを1つ挙げることができますか? CI 2.1 のセキュリティ クラスを見てきましたが、document.cookie、document.write などの悪意のある文字列を許可しないため、かなり優れていると思います。
サイトに基本的に非 html プレゼンテーションがある場合、データベースに挿入する前にグローバル xss_filter を使用しても安全ですか (または、パフォーマンスに大きな影響を与える場合は、フォームの投稿ごとに使用します)。入力/出力でエスケープするかどうかについての長所と短所について読んでいますが、過半数は出力でのみエスケープする必要があると言っています。しかし、なぜ文字列<a href="javascript:stealCookie()">Click Me</a>
をデータベースに保存できるようにするのでしょうか?
私が気に入らないことの1つはjavascript:
、に変換されること[removed]
です。CI のセキュリティ コア$_never_allowed_str
配列を拡張して、許可されていない文字列が[removed]
.
私が読んだこれの最も合理的な不正行為の例は、ユーザーがパスワードを持っている場合javascript:123
にクリーンアップされ[removed]123
、このような文字列document.write123
がユーザーのパスワードとしても渡されることです。繰り返しになりますが、それが起こる可能性はどのくらいですか。たとえそれが起こったとしても、サイトに与える可能性のある実際の害は考えられません.
ありがとう