如何安全地插入并显示数据库中的html文本

时间:2012-12-06 09:36:47

标签: asp.net-mvc asp.net-mvc-3 razor

我是第一次在数据库中插入html所以我需要一些建议,我做对了,安全 我上课有财产:

[AllowHtml] public property Description {get;set}

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

@Html.Raw(Model.Description)

我不知道我应该采取其他措施来防止网站上的某些攻击 我试图输入:

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

但没有任何反应将它保存在数据库中并在以后显示为普通文本 另外我想知道如果用户留下一些未封闭的标签,他会以某种方式打破我的布局 在处理这样的场景时,有哪些聪明的步骤?

2 个答案:

答案 0 :(得分:1)

应该发生的是html应该在写入数据库之前进行编码。如果你查看你的数据库,你应该看到这样的东西(或者至少如果你应该安全的话):

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

现在,当它被html raw写入页面时,它会像提交时一样显示在屏幕上,但是如果你检查页面,你仍会看到同样的事情。

实际上ASP.Net实际上很难编写打开你的网站滥用的代码,所以你通常应该没问题。值得做一些关于这个主题的更多阅读,因为这是很好的东西,特别是如果指导他人。

一些链接:

Preventing Javascript and XSS attacks

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

答案 1 :(得分:1)

您可以使用Windows Protection Library中的Microsoft AntiXSS。

TinyMCE, AntiXSS, MVC3 and GetSafeHtmlFragment

干杯。