有没有针对ASP.Net的反xss库?



我正在阅读一些问题,试图找到一个很好的解决方案,以防止用户提供的url中的XSS(它变成了一个链接)。我找到了一个PHP的,但似乎找不到任何。net的。

要清楚,所有我想要的是一个库,它将使用户提供的文本安全(包括unicode漏洞?),并使用户提供的url安全(用于aimg标签)

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

微软有反跨站脚本库;你可以先看一看,看看它是否符合你的需求。他们还提供了一些关于如何避免XSS攻击的指导,如果您确定他们提供的工具不是您真正需要的,您可以遵循这些指导。

这里有几件事需要考虑。首先,你有ASP。NET请求验证,它将捕获许多常见的XSS模式。不要完全依赖于此,但这是一个不错的小增值。

接下来,您希望根据白名单验证输入,在这种情况下,白名单是关于遵守URL的预期结构的。尝试使用Uri。IsWellFormedUriString符合RFC 2396和RFC 273:

var sourceUri = UriTextBox.Text;
if (!Uri.IsWellFormedUriString(sourceUri, UriKind.Absolute))
{
  // Not a valid URI - bail out here
}

AntiXSS有编码器。UrlEncode这是伟大的编码字符串追加到URL,即在查询字符串。问题是,您想要获取原始字符串和而不是转义字符,如正斜杠,否则http://troyhunt.com最终将成为http%3a%2f%2ftroyhunt.com,并且您遇到了问题。

因为你要编码的上下文是一个HTML属性(它是你要设置的"href"属性),所以你想使用Encoder。HtmlAttributeEncode:

MyHyperlink.NavigateUrl = Encoder.HtmlAttributeEncode(sourceUri);

这意味着像http://troyhunt.com/<script>这样的字符串将被转义到http://troyhunt.com/&lt;script> -但是当然请求验证将首先捕获那个字符串。

还可以看看OWASP十大未经验证的重定向和转发。

我认为你可以自己创建一个字符数组和另一个数组的代码,
如果您从数组中找到字符,将其替换为代码,这将对您有所帮助![但绝对不是100%]


字符数组& lt;


代码数组,lt;
,gt;
div…

我依赖HtmlSanitizer。它是一个。net库,用于从可能导致XSS攻击的构造中清除HTML片段和文档。它使用AngleSharp来解析、操作和渲染HTML和CSS。

因为HtmlSanitizer是基于一个强大的HTML解析器,它也可以保护你从故意或意外"标签中毒",在一个片段中无效的HTML可能会破坏整个文档,导致破坏的布局或样式。

用法:

var sanitizer = new HtmlSanitizer();
var html = @"<script>alert('xss')</script><div onload=""alert('xss')"""
    + @"style=""background-color: test"">Test<img src=""test.gif"""
    + @"style=""background-image: url(javascript:alert('xss')); margin: 10px""></div>";
var sanitized = sanitizer.Sanitize(html, "http://www.example.com");
Assert.That(sanitized, Is.EqualTo(@"<div style=""background-color: test"">"
    + @"Test<img style=""margin: 10px"" src=""http://www.example.com/test.gif""></div>"));

有一个在线演示,另外还有一个。net Fiddle你可以玩。

(从自述文件中复制/粘贴)

相关内容

  • 没有找到相关文章

最新更新