我不知道我这样做是否正确。
我第一次构建一些东西来防止页面受到攻击。
我将从最底层开始:
我有财产:
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>
我收到警报窗口.
我不明白我是否需要做更多的事情来防止这种情况发生?