フォーム データを受け入れ、それをデータベースにエンコードしてクロスサイト スクリプティングの問題を排除し、他の Web ページで適切にフォーマットできる安全な Web アプリケーションを開発しようとしています。
フォームデータは次を使用してエンコードされています
HttpUtility.HtmlEncode('It's my wedding!')
この作業の例は、誰かが「It's my wedding!」と入力することです。テキストボックスに。これにより、次のようにフォーマットされたデータベースが入力されます。
私の結婚式です!
次に、これをデータベースから取り出して .NET リテラル コントロールを使用して表示すると、アポストロフィが画面にエンコードされたまま、まったく同じように表示されます。
Web ブラウザは & をアンパサンドとして解釈し、© を著作権記号として解釈します。コード ' をアポストロフィとして解釈しないのはなぜですか?
次に使用するとします:
HttpUtility.HtmlDecode('It's my wedding!');
これでアポストロフィの問題は解決しますが、誰かがこのフィールドに次のような悪意のある JavaScript を挿入できたときに HtmlDecode メソッドを使用すると、次のようになります。
It's my wedding!<script type="text/javascript">alert('XSS!');</script>
また、エンコードされた JavaScript をデコードし、攻撃を実行します。この場合、そもそもなぜ HttpUtility.HtmlEncode() を使用するのでしょうか?
http://wpl.codeplex.com/でMicrosoft AntiXss ライブラリを使用している人を見てきましたが、ユーザーが提供するホワイト リストを修正できないため、その品質と有効性についてひどいレビューを受けているようです。
HTML を安全にエンコードし、XSS 攻撃を防ぎながら表示できるようにするにはどうすればよいでしょうか? タグのストリッピング/エンコードが唯一の解決策ですか?
誰もが以前にこれをどのように処理しましたか?
ありがとう!
カール