Asp.net mvc 防止XSS黑客攻击的最佳实践

Asp.net mvc 防止XSS黑客攻击的最佳实践,asp.net-mvc,xss,Asp.net Mvc,Xss,我是25开发者团队的成员。我们使用mvc.net应用程序,安全性对我们来说非常重要。我们使用@Html.AntiForgeryToken()和任何与安全相关的东西,但我们担心防止XSS黑客攻击。 我们编码每一个地方,但有些地方我们需要从用户的html。 防止XSS黑客攻击的最佳实践是什么?防止XSS的黄金法则是对输出到视图的所有内容进行HTML编码 希望@剃须刀功能已经自动为您实现了这一点 因此,当您编写以下内容之一时,您是非常安全的: @Model.SomeProperty @Html.Dis

我是25开发者团队的成员。我们使用mvc.net应用程序,安全性对我们来说非常重要。我们使用
@Html.AntiForgeryToken()
和任何与安全相关的东西,但我们担心防止XSS黑客攻击。 我们编码每一个地方,但有些地方我们需要从用户的html。
防止XSS黑客攻击的最佳实践是什么?

防止XSS的黄金法则是对输出到视图的所有内容进行HTML编码

希望
@
剃须刀功能已经自动为您实现了这一点

因此,当您编写以下内容之一时,您是非常安全的:

@Model.SomeProperty
@Html.DisplayFor(x => x.SomeProperty)
您应该小心使用
@Html.Raw
帮助程序:

@Html.Raw(Model.SomeProperty)
如果使用该选项,则输出将不会是HTML编码的。这并不意味着您的站点容易受到XSS注入的攻击。例如,如果您完全控制该属性,并且不是来自用户输入,那么您应该非常安全


如果您使用的是WebForms视图引擎,那么您应该更加小心,因为
我已经更新了关于需要输出用户输入而不进行编码的特定情况的答案。你应该使用AntiXSS库来过滤掉危险的标签。这不仅仅是关于标签,我希望还有其他东西。因为有人可以键入“”,因为onerror属性接受javascript代码。使用Html.Raw是非常危险的,但我也确实需要使用它(超链接n之类的),所以我希望AntiXSS有一些好的代码。
<%= Model.SomeProperty %>
<%= Html.DisplayFor(x => x.SomeProperty) %>
<%: Model.SomeProperty %>