- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚遇到一个问题,其答案建议使用 AntiXss 库以避免跨站点脚本。听起来很有趣,阅读 msdn blog ,它似乎只提供了一个 HtmlEncode() 方法。但我已经使用了 HttpUtility.HtmlEncode()。
为什么我要使用 AntiXss.HtmlEncode 而不是 HttpUtility.HtmlEncode?
的确,我不是第一个提出这个问题的人。而且,确实,谷歌出现了some answers , 主要是
最佳答案
我没有专门针对您的问题的答案,但我想指出白名单与黑名单的方法不仅仅是“好”。这一点很重要。很重要。在安全方面,每一件小事都很重要。请记住,使用跨站点脚本和 cross-site request forgery ,即使您的网站没有显示敏感数据,黑客也可以通过注入(inject) javascript 来感染您的网站,并使用它从另一个网站获取敏感数据。因此,正确地做是至关重要的。
OWASP guidelines specify using a white list approach . PCI 合规性指南也在编码标准中指定了这一点(因为它们引用了 OWASP 指南)。
此外,较新版本的 AntiXss 库有一个不错的新功能:.GetSafeHtmlFragment(),这对于您希望将 HTML 存储在数据库中并将其作为 HTML 显示给用户的情况非常有用。
此外,对于“错误”,如果您正确编码并遵循所有安全准则,则您使用的是参数化存储过程,因此单引号将被正确处理,如果您没有正确编码,则不书架图书馆将全面保护您。 AntiXss 库旨在成为一种使用工具,而不是知识的替代品。依靠图书馆为您做正确的事情,您会期望一个非常好的画笔在没有好的艺术家的情况下制作出好的画作。
编辑 - 添加
正如问题中所问的,反 xss 将保护您而 HttpUtility 不会保护您的示例:
HttpUtility.HtmlEncode and Server. HtmlEncode do not prevent Cross Site Scripting
不过,这是作者的说法。我没有亲自测试过。
听起来您已经遵守了安全准则,所以这可能不是我需要告诉您的事情,但以防万一经验不足的开发人员正在阅读本文,我说白名单方法至关重要的原因这是。
现在,今天,HttpUtility.HtmlEncode 可以成功阻止所有攻击,只需删除/编码 <
和 >
,加上一些其他“已知的潜在不安全”字符,但总有人试图想出新的闯入方式。只允许已知安全(白名单)的内容比尝试考虑所有可能的不安全内容要容易得多输入攻击者可能会扔给你(黑名单方法)。
关于asp.net - AntiXss.HtmlEncode 和 HttpUtility.HtmlEncode 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1608854/
我正在尝试开发一个安全的 Web 应用程序,它可以接受表单数据,将其编码到数据库中以消除跨站点脚本问题,然后在其他网页上很好地格式化它。 正在使用 对表单数据进行编码 HttpUtility.Html
我尝试在 wp8.1 中开发某些应用程序时找不到 HttpUtility.UrlDecode 或 HttpUtility.UrlEncode。我包含了 System.net 命名空间。这是从 8.1
我在下载文件时遇到问题,下载时将所有空格替换为下划线。 基本上我在这里遇到了问题: Response.AddHeader("Content-Disposition", "attachment;
我正在使用这两行代码作为反向代理 reverseProxy:=httputil.NewSingleHostReverseProxy(url) reverseProxy.ServeHTTP(rw, re
我在编译 C# 应用程序时遇到此错误。看起来像是一个微不足道的错误,但我无法解决它。 我的设置是 Windows 7 64 位。 Visual-Studio 2010 C# 表示 B2Rel。 我添加
我正在尝试提取带有 + 特殊字符的电子邮件,但由于某种原因 ParseQueryString 跳过它: namespace ParsingProblem { class Pro
我必须对一个字段进行编码,以确保脚本注入(inject)的安全。 我知道我可以使用 HttpUtility.HtmlEncode 和 Decode,但是这种用于 HI-ASCII 字符的方法超出了数据
我是 Android 编程新手,我一直在学习教程以在我的应用程序中获取实时 Twitter 提要。我在我的 String twitterTweets = httpUtil.getHttpRespons
我正在尝试使用 HttpUtility.UrlEncode 对以下字符串进行编码; 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.dbe01.tv" OR
我正在使用 facebook-java-api 为我的 Web 应用程序实现 facebook connect。我实际上正在遵循此 site 中的教程 我已经编写了一个 servlet 来实现教程中给
我正在尝试对要发送到网络服务进行处理的参数进行编码。我从一个带有参数的命令开始,例如: TransportProviderConfirmation/68,Akal Singh,+97254494486
当 .net 在您请求时已经解码查询字符串时,HttpUtility.UrlDecode 有什么意义。 这是经典 ASP 的后遗症还是我遗漏了什么? 最佳答案 如果您从其他来源收到 UrlEncode
我收到以下错误: The name 'HttpUtility' does not exist in the current context 我正在构建一个 winform 应用程序,这是我使用 fra
这可能是个愚蠢的问题,但每次都会让我感到困惑。 HttpUtility 有方法 HtmlDecode 和 UrlDecode。这两种方法是否解码我可能发现的任何内容(Html/Http 相关)?我什么
我有一个返回 View 的 ASP.NET MVC Controller 。在这个 View 中,我创建了一些 html。例如 @Html.ActionLink(HttpUtility.HtmlDec
我使用此代码发送彩信,所有参数都正确,但连接被拒绝。并且网络已在移动彩信上连接。 HttpUtils 是一个来自此处下载的库的类:https://github.com/android/platform
我处在一个我有一些路径的情况下。此路径可能类似于“jadajada.com/My Site.html”。 我使用 HttpUtility.UrlEncode 对 url 进行编码,这很棒。但是,我遇到
有人能给我解释一下 ParseQueryString 的这种行为吗: var qs = HttpUtility.ParseQueryString("/Site/controller/Index?dat
我试图在我的 VB.NET 项目中调用静态 HttpUtility.UrlEncode,但 IDE 无法识别该类,表示它未声明。 我已将命名空间 System.Net 和 System.Web 导入到
如何在窗口应用程序中使用 httpUtility.encode 和 decode。我实现了一个窗口应用程序。此应用程序使用 Web 请求到 Web 服务器。 Web 服务器响应 http 编码版本。那
我是一名优秀的程序员,十分优秀!