【问题标题】:How to safely insert to and display html text from database如何安全地插入和显示来自数据库的 html 文本
【发布时间】:2012-12-06 19:24:54
【问题描述】:

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

[AllowHtml] public property Description {get;set}

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

@Html.Raw(Model.Description)

我不知道我是否应该采取其他措施来防止站点受到攻击。
我尝试输入:

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

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

      【解决方案2】:

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

      TinyMCE, AntiXSS, MVC3 and GetSafeHtmlFragment

      干杯。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        • 2012-04-18
        • 1970-01-01
        • 2022-09-23
        • 2022-01-13
        • 1970-01-01
        • 2019-12-28
        相关资源
        最近更新 更多