1

我是第一次在数据库中插入 html,所以我需要一些建议,我是否让它正确且安全。
我有财产类:

[AllowHtml] public property Description {get;set}

在视图中,我有一个tinyMCE(在文本区域上),用户可以在其中输入他的数据。
当我稍后显示该 html 时,我使用:

@Html.Raw(Model.Description)

我不知道我是否应该采取其他措施来防止对站点的某些攻击。
我试图输入:

<script>alert('attack');</script>

但什么也没发生,它将它保存在数据库中并稍后显示为普通文本。
另外我想知道用户是否会留下一些未关闭的标签,他会以某种方式破坏我的布局。
处理这种情况时有哪些明智的步骤?

4

2 回答 2

1

应该发生的是,在将 html 写入数据库之前应该对其进行编码。如果您查看数据库,您应该会看到类似这样的内容(或者至少在安全的情况下您应该看到):

&lt;script&gt;alert(&#39;attack&#39;);&lt;/script&gt;

现在,当它通过 html raw 写入页面时,它会像提交时一样出现在屏幕上,但是如果您检查页面,您仍然会看到相同的内容。

实际上,ASP.Net 使编写打开您的网站容易被滥用的代码变得非常困难,因此您通常应该没问题。值得围绕该主题进行更多阅读,因为这是需要注意的好东西,尤其是在指导他人时。

一些链接:

防止 Javascript 和 XSS 攻击

http://msdn.microsoft.com/en-us/library/ff649310.aspx

于 2012-12-06T11:13:17.100 回答
1

您可以使用Windows 保护库中的 Microsoft AntiXSS 。

TinyMCE、AntiXSS、MVC3 和 GetSafeHtmlFragment

干杯。

于 2012-12-06T11:24:54.793 回答