我不知道我这样做是否正确。
我第一次构建一些东西来防止页面上的攻击。
我将从底部开始:
我有财产:
public string Description {get;set;}
用户可以通过 tinyMCE 设置它的值
tinyMCE.init({
mode: "textareas",
theme: "advanced",
encoding : "xml"...
在控制器中,在我将其保存在数据库中之前,我会:
model.Description = HttpUtility.HtmlDecode(model.Description);
在数据库中,我有一个值:
<p>bla bla bla</p>
我在我的项目中添加了 AntiXSS 库:
public class AntiXssEncoder : HttpEncoder
{
public AntiXssEncoder() { }
protected override void HtmlEncode(string value, TextWriter output)
{
output.Write(Encoder.HtmlEncode(value)); // on breakpoint code always get in here
}
...
当我显示来自数据库的数据时,我使用:
@Html.Raw(Model.Place.Description)
它工作正常,我只看到文字。没有 HTML 标签。断线工作正常。我可以用粗体、斜体等设置文本样式。
但如果我输入:
<script>alert(open to attack);</script>
我得到了警报窗口。
我不明白我是否需要做更多的事情来防止这种情况发生?