[英]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代码或通过验证标记它们,但允许我提供的其他文本格式化功能,而不会影响安全性。
=================
谢谢您的回答。
如果用户需要输入html标记,那么我建议你在模型上使用[AllowHtml]
属性。 如果仍然在post方法上出现错误,可以使用[ValidateInput(false)]
属性,但这不是一种非常安全的方法。 然后,您可以使用Antixss库对其进行编码。 另外,总是使用AntiForgeryToken
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.