在发送到Controller/DB之前编码HTML

Sta*_*tan 2 c# asp.net asp.net-mvc-3

A potentially dangerous Request.Form value was detected from the client (Body="<b></b>").

当我尝试输入类似于<b></b>我的注释字段并发送它时,会发生此错误.我搜索过,我发现只有完全禁用危险数据的验证,但我不想禁用它,因为那时我的网站将容易受到攻击.
我想要的是在发送之前对它进行编码或沿着这些行进行编码,这样它就会发送刚刚编码的数据.

Ric*_*est 11

如果您正在使用.net 4,您可以使用[AllowHtml]来装饰您的模型,这将只允许该特定属性.然后,您可以在控制器逻辑中对其进行清理.

public class MyViewModel
{
    public string prop1 { get; set; }

    [AllowHtml]
    public string prop2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


Tim*_*Tim 7

为什么不简单地使用HttpUtility.HtmlEncode方法?

string encodedHTML = HttpUtility.HtmlEncode(unencodedString)
Run Code Online (Sandbox Code Playgroud)

您也可以查看Microsoft的Anti-XSS Library.