Cal*_*aNN 3 xss antixsslibrary asp.net-4.0 asp.net-mvc-3
我正在使用AntiXssLibrary 4.0但它没有转义\ x3c.我的错是什么?
我已将AntiXss配置为HttpEncoder基于此处的默认值http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx并设置encoderType的httpRuntime在web.config.
我也创建AntiXSSEncoder派生HttpEncoder而不是弃用
output.Write(AntiXss.HtmlEncode(value));
Run Code Online (Sandbox Code Playgroud)
我用它来覆盖HtmlEncode方法:
output.Write(Encoder.HtmlEncode(value));
Run Code Online (Sandbox Code Playgroud)
目前,如果我浏览这个:
http://localhost:28453/?k=sss\x3cscript\x3ealert%28\x27haaha\x27%29;\x3c/script\x3e
Run Code Online (Sandbox Code Playgroud)
警报"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();
}
Run Code Online (Sandbox Code Playgroud)
然后在视图中我说:
<script type="text/javascript">
$(document).ready(function () {
var a = '@ViewBag.k';
var b = '@ViewBag.j';
$('.resultName:first').html(b);
});
</script>
Run Code Online (Sandbox Code Playgroud)
从浏览器中,值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>
Run Code Online (Sandbox Code Playgroud)
更新:它只发生在我使用AntiXssEncoderas编码器类型时.当我评论这个并重建时.单引号'被MVC逃脱了.似乎禁用了AntiXss!我错过了什么吗?我希望这个工作,因为我想像\ x3c也像视频一样逃脱.
<!--<httpRuntime encoderType="AntiXSSEncoder, MVCWeb"/>-->
Run Code Online (Sandbox Code Playgroud)
你是对的,因为4.0 .NET已在HTMLEncode中编码撇号,而AntiXSS则没有,因为严格来说,HTML字符串不是必需的,仅用于属性字符串.
现在,一旦你将AntiXSS作为假设不再适用的编码器进行交换,人们就会毫不犹豫地在任何地方应用Html编码.
因此,当我推送下一版本的AntiXSS时,它将始终对撇号进行编码.
| 归档时间: |
|
| 查看次数: |
3520 次 |
| 最近记录: |