JavaScriptを使用してデータをエンコードするソリューションを見つけました。これは.NETでデコードされます(jQueryを必要としません)。
テキストエリアに、boo()を呼び出すonchangeを含めます。
<textarea id="userbox" onchange="boo();"></textarea>
最後に、.NETでは、
string val = Server.UrlDecode(HiddenField1.Value);
私はこれが一方向であることを認識しています-双方向が必要な場合はクリエイティブになる必要がありますが、これはweb.configを編集できない場合の解決策を提供します
以下は、私(MC9000)が思いついてjQueryを介して使用する例です。
$(document).ready(function () {
$("#txtHTML").change(function () {
var currentText = $("#txtHTML").text();
currentText = escape(currentText); // Escapes the HTML including quotations, etc
$("#hidHTML").val(currentText); // Set the hidden field
});
// Intercept the postback
$("#btnMyPostbackButton").click(function () {
$("#txtHTML").val(""); // Clear the textarea before POSTing
// If you don't clear it, it will give you
// the error due to the HTML in the textarea.
return true; // Post back
});
});
そしてマークアップ:
<asp:HiddenField ID="hidHTML" runat="server" />
<textarea id="txtHTML"></textarea>
<asp:Button ID="btnMyPostbackButton" runat="server" Text="Post Form" />
これはうまくいきます。ハッカーがJavaScriptをバイパスして投稿しようとすると、エラーが表示されるだけです。エンコードされたこのすべてのデータをデータベースに保存し、それを(サーバー側で)エスケープ解除し、他の場所に表示する前に解析して攻撃をチェックすることができます。