首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET提供了编码数据以防止XSS攻击的8+方法。我应该在什么时候使用哪一种?

.NET提供了编码数据以防止XSS攻击的8+方法。我应该在什么时候使用哪一种?
EN

Security用户
提问于 2014-03-04 14:59:35
回答 1查看 3.2K关注 0票数 2

我正在研究如何使用.NET来防止XSS攻击,并遇到了以下编码数据的方法:

代码语言:javascript
复制
        string asdf = WebUtility.UrlEncode(code);
        string asdf1 = HttpUtility.UrlEncode(code);
        string asdf1a = HttpUtility.UrlEncodeUnicode(code); // OBSOLETE
        string asdf1b = HttpUtility.UrlPathEncode(code);
        string asdf1c = Uri.EscapeDataString(code);
        string asdf1d = Uri.EscapeUriString(code);
        string asdf1e = HttpUtility.HtmlEncode(code);
        string asdf1f = HttpUtility.HtmlAttributeEncode(code);

(我省略了byte[]方法.但还有更多)

考虑到这些方法中的每一种都以完全不同的方式工作,并且位于完全不同的类中,我会假设在错误的选择组合中很容易引起XSS问题。

对于给定的情况,什么时候使用给定的编码方法比较合适?为什么?

EN

回答 1

Security用户

发布于 2014-03-04 15:49:50

这是防止ASP.NET中XSS的某种来源(至少来自微软):

如何:在ASP.NET中防止跨站点脚本编写

从这篇专门针对你的问题的文章中可以收集到一些重要的东西:

  • 如果HttpUtility.HtmlEncode方法包含来自用户或其他来源(如数据库)的输入,则使用该方法对输出进行编码。
  • 如果输出URL是根据输入构造的,请使用HttpUtility.UrlEncode对它们进行编码。

关于HTMLAttributeEncodeHTMLAttributeEncode

  • HtmlAttributeEncode方法只将引号(")、符号(&)和左尖括号(<)转换为等价的字符实体,比HtmlEncode方法快得多。
  • HtmlAttributeEncode方法的字符串结果应该仅用于双引号属性。当使用带有单引号属性的HtmlAttributeEncode方法时,可能会出现安全性问题。

最后,对于UriEscapeStringUriEscapeString,如果您要转义的是URIURI,请使用它。这个问题讨论了UriEscapeStringUriEscapeDataString的区别。

票数 4
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/52699

复制
相关文章

相似问题

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