当前位置:  开发笔记 > 编程语言 > 正文

为什么要使用Microsoft AntiXSS库?

如何解决《为什么要使用MicrosoftAntiXSS库?》经验,为你挑选了2个好方法。

当您可以简单地使用数据编码时HttpUtility.HtmlEncode,我们为什么要使用AntiXss.HtmlEncode

为什么白名单比黑名单更好?

此外,在Anti XSS库中,我在哪里指定白名单?



1> Steven..:

您无法使用AntiXSS库指定或更改白名单,这在您考虑时并不奇怪.默认情况下,AntiXSS库会编码不在以下范围内的所有字符:0..9a..zA..Z.这组字符是安全的(因此在白名单上)并且不需要对它们进行编码.请注意,AntiXSS库有不同的列表,用于编码javascript,html和url.请不要使用html编码作为url,因为你的应用程序中会有一个安全漏洞.

请注意,白色列表上的HtmlEncode工作与白名单上的不同GetSafeHtmlFragment.随着HtmlEncode你说'请编码不在白名单上的每个字符',GetSafeHtmlFragment你说'请删除所有不在白名单上的标签和属性'.

当您使用ASP.NET 4.0时,我建议您不要使用AntiXSS库(直接),而只需使用内置机制(如HttpUtility)来编码Html.ASP.NET 4.0 允许您在配置文件中配置HttpEncoder.您可以自己编写HttpEncoder使用AntiXSS库的文件(很可能未来版本的AntiXSS库将包含一个HttpEncoder实现).通过这样做,您的整个应用程序(以及所有ASP.NET控件和自定义控件)将使用白名单编码而不是黑名单编码.

ASP.NET 4.0还为编码文本引入了新的代码块.你可以使用名字:<%: Model.FirstName %>.但是,我个人觉得<%= HttpUtility.HtmlEncode(Model.FirstName) %>更明确.


实际上,AntiXSS"保持独立"的字符范围大于ASCII字母.我们支持一些更常见的Unicode/UTF语言字符,并希望将其扩展为完整的Unicode 5支持.关于HttpEncoder这是一个很好的观点,我们今天正在召开sprint会议,我会将其添加到功能列表中,因为我不记得在代码库中看到它(但我两周前才加入)

2> ternaryOpera..:

白名单总是比较安全的是黑名单-只是觉得这将是更安全,让所有谁是人民的名单容许你的小队或只允许那些谁.(基本上黑名单只能处理明显或以前使用过的攻击).

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有