AntiXssLibrary 4.0を使用していますが、\x3cをエスケープしていません。私の間違いは何ですか?
ここhttp://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspxHttpEncoder
に基づいて、AntiXssをデフォルトに構成し、の。_encoderType
httpRuntime
web.config
非推奨ではなく、AntiXSSEncoder
派生したものも作成しますHttpEncoder
output.Write(AntiXss.HtmlEncode(value));
HtmlEncode
これを使用してメソッドをオーバーライドします。
output.Write(Encoder.HtmlEncode(value));
現在、これを閲覧すると:
http://localhost:28453/?k=sss\x3cscript\x3ealert%28\x27haaha\x27%29;\x3c/script\x3e
アラート「haaha」は、AntiXssライブラリが機能していないことを示しています。この番組のようにhttp://channel9.msdn.com/Events/MIX/MIX10/FT05を13分で見たいだけです。
確認するために、これもアクションで設定します。
public ActionResult Index(string k)
{
ViewBag.k = k;
ViewBag.j = Microsoft.Security.Application.Encoder.HtmlEncode(k);
return View();
}
次に、ビューにこれを置きます:
<script type="text/javascript">
$(document).ready(function () {
var a = '@ViewBag.k';
var b = '@ViewBag.j';
$('.resultName:first').html(b);
});
</script>
ブラウザからの値aとbは同じであり、AntiXssがうまく機能していないことを示しています。
<script type="text/javascript">
$(document).ready(function () {
var a = 'sss\x3cscript\x3ealert(\x27haaha\x27);\x3c/script\x3e';
var b = 'sss\x3cscript\x3ealert(\x27haaha\x27);\x3c/script\x3e';
$('.resultName:first').html(b);
});
</script>
更新AntiXssEncoder
:エンコーダタイプとして使用した場合にのみ発生しました。これにコメントして再構築すると。一重引用符'はMVCによってエスケープされました。AntiXssが無効になっているようです!私は何かが足りないのですか?\ x3cもビデオのようにエスケープしたいので、これを機能させたいです。
<!--<httpRuntime encoderType="AntiXSSEncoder, MVCWeb"/>-->