繁体   English   中英

C#MVC跨站点脚本(XSS)预防

[英]C# MVC Cross-Site Scripting (XSS) Prevention

我在.Net(MVC)中有一个管理站点,它提供了一个开放字段,我们在其中为用户提供了输入格式化文本的选项,用户可以设置文本样式包括链接等。堆栈溢出的相同功能在发布时提供题。

在文本字段中输入的HTML在后调用中编码,&lt; for <,&gt; for>等等。 但javascript代码不是。

CheckLink [** checkscript **](jaVasCriPt:eval(atob('YWxlcnQoJ3Rlc3QzMzMnKQ ==')))------我必须编写上面的代码才能在评论上显示.------- ---

这会创建一条警报消息,有人可以利用它。

有些库可用于编码HTML,但我们不希望呈现编码文本,因为我们希望链接在公共视图中显示。 因此,如果我使用.Net XSS库或Web.Security(getsafehtml或HttpUtility.encode)对服务器上的传入请求进行编码,则会对链接和所有剩余内容进行编码。

发展

1)是否有任何库将黑名单javascript函数 - jaVasCriPt:eval或编码它们保留HTML原样。 我想取出javascript代码或通过验证标记它们,但允许我提供的其他文本格式化功能,而不会影响安全性。

=================

当发布的数据中存在不安全的javascript时,任何可以引发异常的库(在C#中)都是我正在寻找的东西。

谢谢您的回答。

如果用户需要输入html标记,那么我建议你在模型上使用[AllowHtml]属性。 如果仍然在post方法上出现错误,可以使用[ValidateInput(false)]属性,但这不是一种非常安全的方法。 然后,您可以使用Antixss库对其进行编码。 另外,总是使用AntiForgeryToken

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM