首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有针对ASP.Net的反XSS库?

有没有针对ASP.Net的反XSS库?
EN

Stack Overflow用户
提问于 2011-04-21 12:26:11
回答 4查看 3.3K关注 0票数 1

我读了一些问题,试图找到一个好的解决方案来防止用户提供的URL(变成一个链接)中的XSS。我已经找到了one for PHP,但是我似乎找不到任何关于.Net的东西。

需要明确的是,我想要的是一个库,它将使用户提供的文本安全(包括unicode gotchas?)并确保用户提供的URL安全(用于aimg标记)

我注意到StackOverflow有非常好的XSS保护,但遗憾的是,MarkdownSharp似乎缺少他们的Markdown实现的一部分。(我的很多内容都使用MarkdownSharp )

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-21 12:34:56

微软有Anti-Cross Site Scripting Library;你可以先看看它,确定它是否适合你的需求。他们还有关于如何避免XSS攻击的some guidance,如果你确定他们提供的工具不是你真正需要的,你可以效仿。

票数 6
EN

Stack Overflow用户

发布于 2011-04-22 16:15:01

这里有几件事需要考虑。首先,您已经拥有了ASP.NET Request Validation,它将捕获许多常见的XSS模式。不要完全依赖这一点,但这是一个很好的小增值。

下一步,您希望根据白名单验证输入,在本例中,白名单就是符合URL的预期结构。尝试使用Uri.IsWellFormedUriString来遵守RFC2396和RFC273:

代码语言:javascript
复制
var sourceUri = UriTextBox.Text;
if (!Uri.IsWellFormedUriString(sourceUri, UriKind.Absolute))
{
  // Not a valid URI - bail out here
}

AntiXSS的Encoder.UrlEncode非常适合编码要追加到网址的字符串,即在查询字符串中。问题是,您希望获取原始字符串,而不是转义字符,如正斜杠,否则http://troyhunt.com将以http%3a%2f%2ftroyhunt.com结束,您就会遇到问题。

由于您正在编码的上下文是一个HTML属性(即您正在设置的"href“属性),因此您希望使用Encoder.HtmlAttributeEncode:

代码语言:javascript
复制
MyHyperlink.NavigateUrl = Encoder.HtmlAttributeEncode(sourceUri);

这意味着像http://troyhunt.com/<script>这样的字符串将被转义为http://troyhunt.com/&lt;script> -但当然,请求验证无论如何都会先捕获这个字符串。

还可以看看OWASP排名前10的Unvalidated Redirects and Forwards

票数 2
EN

Stack Overflow用户

发布于 2011-04-21 12:30:48

我认为您可以自己创建一个字符数组和另一个包含代码的数组,

如果你从数组中找到了字符,用代码替换它,这会对你有帮助!但绝对不是100%

字符数组

<

..。

代码数组

& lt;

& gt;

..。

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

https://stackoverflow.com/questions/5739493

复制
相关文章

相似问题

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