首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AntiXss.HtmlEncode和HttpUtility.HtmlEncode有什么区别?

AntiXss.HtmlEncode和HttpUtility.HtmlEncode有什么区别?
EN

Stack Overflow用户
提问于 2009-10-22 17:48:03
回答 5查看 28.1K关注 0票数 51

我刚刚遇到了一个问题,并给出了一个答案,建议AntiXss库避免跨站点脚本编写。读msdn博客听起来很有趣,它似乎只是提供了一个HtmlEncode()方法。但是我已经使用了HttpUtility.HtmlEncode()。

为什么我想使用AntiXss.HtmlEncode而不是HttpUtility.HtmlEncode?

事实上,我并不是第一个提出这个问题的。事实上,Google出现了一些 答案,主要是

  • 白名单而不是黑名单方法
  • 0.1ms性能改进

很好,但这对我意味着什么?我不太关心0.1ms的性能,我也不太想下载并为我已经拥有的功能添加另一个库依赖项。

是否有AntiXss实现可以防止HttpUtility实现不会发生的攻击的例子?

如果我继续使用HttpUtility实现,我是否面临风险?那这个‘臭虫’

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-10-22 17:58:53

我对你的问题没有具体的答案,但我想指出的是,白名单与黑名单的做法并不仅仅是“很好”。这很重要。非常重要。说到安全,每件小事都很重要。请记住,使用跨站点脚本和跨站点请求伪造,即使您的站点没有显示敏感数据,黑客也可能通过注入javascript来感染您的站点,并使用它从另一个站点获取敏感数据。所以做好这件事是至关重要的。

使用白名单方法指定OWASP指南。PCI法规指南还在编码标准中指定了这一点(因为它们指的是OWASP准则)。

另外,较新版本的AntiXss库有一个很好的新函数:.GetSafeHtmlFragment(),这对于您希望在数据库中存储HTML并将其显示为HTML的情况很好。

另外,至于"bug",如果您编码正确,并且遵循所有的安全准则,那么您使用的是参数化存储过程,因此单引号将被正确地处理,如果您没有正确地编码,则没有现成的库将完全保护您。AntiXss库是用来作为工具使用的,而不是知识的替代品。依靠图书馆来做好这件事,你就会期待一支真正好的画笔在没有好的艺术家的情况下画出好画。

编辑添加的

正如在这个问题中所问的,一个关于抗xss将保护您和HttpUtility的示例不会:

HttpUtility.HtmlEncode和服务器。HtmlEncode不阻止跨站点脚本编写

不过,这是作者说的。我还没亲自测试过呢。

听起来你已经掌握了你的安全指南,所以这可能不是我需要告诉你的事情,但是万一一个没那么有经验的开发人员读到了这篇文章,我说白名单方法很关键的原因就是这个。

现在,HttpUtility.HtmlEncode可能成功地阻止了所有的攻击,只需删除/编码<>,再加上其他几个“已知的潜在不安全”字符,但总会有人想出新的入侵方式。只允许已知的安全(白名单)内容比试图考虑攻击者可能向您抛出的每一个可能不安全的输入(黑名单方法)要容易得多。

票数 35
EN

Stack Overflow用户

发布于 2009-10-23 13:50:34

关于为什么您会使用一个而另一个,考虑到AntiXSS库比ASP.NET框架更频繁地发布--因为,正如David所说的,‘有人总是试图想出新的方法来破解’,当有人想出一个新的方法时,AntiXSS库更有可能得到一个更新的版本来抵御它。

票数 12
EN

Stack Overflow用户

发布于 2011-07-29 06:41:04

以下是Microsoft.Security.Application.AntiXss.HtmlEncodeSystem.Web.HttpUtility.HtmlEncode方法之间的区别:

  1. 反XSS使用白色列表技术,有时被称为包含原则,以防止跨站点脚本(XSS)攻击。这种方法的工作方式是首先定义一组有效或允许的字符,并对该集合之外的任何内容(无效字符或潜在攻击)进行编码。该名称空间中的System.Web.HttpUtility.HtmlEncode和其他编码方法使用排除原则,只对指定为潜在危险的某些字符进行编码,例如<、>和‘字符。
  2. 反XSS图书馆的白色(或安全)字符列表支持十几种语言(希腊语和科普特语、西里尔语、西里尔语补编、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语、阿拉伯语补编、塔纳语、NKo等)
  3. 反XSS库是专为减轻XSS攻击而设计的,而创建HttpUtility编码方法是为了确保ASP.NET输出不会破坏HTML。
  4. 性能- AntiXss.HtmlEncode()HttpUtility.HtmlEncode()之间的平均增量是每个事务的+0.1毫秒。
  5. 反XSS版本3.0提供了一个测试工具,允许开发人员同时运行XSS验证和性能测试。
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1608854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档