Request Validation をオンにしたことがなく、ユーザー入力を Html エンコードしていない従来の ASP.Net サイト (最近 .NET 4.0 にアップグレードしたもの) があります。
私の解決策は、リクエストの検証をオンにし、Global.asax で HttpRequestValidationException をキャッチして、ユーザーをエラー ページにリダイレクトすることでした。何千もの場所で行う必要があるため、ユーザー入力を Html エンコードしません。私のアプローチが、データベースに保存される XSS ベクトルを停止することを願っています。
ただし、データベースに XSS ベクトルが既に保存されている場合は、すべての出力を Html エンコードする必要があると思います。残念ながら、これを成功させるための開発とテストのリソースは非常に限られています。私が経験する必要がある変更のリストを思いついた:
- すべての <%= %> を検索して <%: %> に置き換えます。
- すべてのラベルを検索してリテラルに置き換え、Mode="Encode" を追加します。
- すべての eval() を HtmlEncode でラップします。
私の質問は次のとおりです。
- すべての出力を自動的に Html エンコードする簡単な方法はありますか?
- 上記のリストに欠けているものはありますか?
- 注意すべき落とし穴はありますか?
ありがとう。