我是第一次在数据库中插入html所以我需要一些建议,我做对了,安全
我上课有财产:
[AllowHtml] public property Description {get;set}
在视图中,我有一个 tinyMCE (在文本区域)用户输入他的数据。
当我稍后显示该HTML时,我使用:
@Html.Raw(Model.Description)
我不知道我应该采取其他措施来防止网站上的某些攻击
我试图输入:
<script>alert('attack');</script>
但没有任何反应将它保存在数据库中并在以后显示为普通文本
另外我想知道如果用户留下一些未封闭的标签,他会以某种方式打破我的布局
在处理这样的场景时,有哪些聪明的步骤?
答案 0 :(得分:1)
应该发生的是html应该在写入数据库之前进行编码。如果你查看你的数据库,你应该看到这样的东西(或者至少如果你应该安全的话):
<script>alert('attack');</script>
现在,当它被html raw写入页面时,它会像提交时一样显示在屏幕上,但是如果你检查页面,你仍会看到同样的事情。
实际上ASP.Net实际上很难编写打开你的网站滥用的代码,所以你通常应该没问题。值得做一些关于这个主题的更多阅读,因为这是很好的东西,特别是如果指导他人。一些链接:
答案 1 :(得分:1)
您可以使用Windows Protection Library中的Microsoft AntiXSS。
TinyMCE, AntiXSS, MVC3 and GetSafeHtmlFragment
干杯。