【问题标题】:Render formatted HTML string on webpage在网页上呈现格式化的 HTML 字符串
【发布时间】:2015-11-02 17:41:40
【问题描述】:

我有一堆看起来像这样的 HTML 文本:

<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. 
Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, 
ante. Donec eu libero sit amet quam egestas semper. 
<em>Aenean ultricies mi vitae est.</em> Mauris placerat 

这是用户将在论坛上发布的文本,然后此格式化字符串存储在服务器上。我在另一个页面上显示此文本,但希望它在用户格式化时呈现,例如:

Pellentesque habitant morbi tristique senectus et netus et malesuada 成名 ac turpis egestas。 Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, 赌注。 Donec eu libero 坐在amet quam egestas semper。 Aenean ultricies mi vitae est. Mauris placerat

我尝试过使用&lt;pre&gt;&lt;p&gt; 和其他标签,但它们只是打印出原始 HTML,而不是使用给定的格式。我目前正在为我的页面使用 Angular.JS。

http://html-ipsum.com/ 获得的示例文本,“厨房水槽”示例

【问题讨论】:

    标签: html angularjs


    【解决方案1】:

    您可能存储了字符串uuencoded,因此它会显示字面显示的代码。

    我会仔细检查您的原始数据存储以验证这一点。

    无论如何这不是处理您的代码的推荐方式。您基本上是在邀请恶意用户向您的其他用户注入恶意代码。

    当允许用户输入任何 html 时,最好只允许一小部分标签(和一小部分属性),即使这样也很难做到正确。

    请参阅Cross-Site Scripting (XSS) Tutorial 了解更多信息。

    【讨论】:

      【解决方案2】:

      听起来,在存储 HTML 的过程中,您已经转义了 HTML 实体(即将&amp;lt; 转换为&amp;lt;,诸如此类)。

      我不知道您使用的是哪种语言,但可以对几乎任何语言的 HTML 字符进行转义。 Here's an answer about doing it in JavaScripthtml_entity_decode() 方法将在 PHP 中发挥作用。无论您使用哪种语言,只需研究该语言中的“unes​​cape html 实体”即可。

      警告:由于您正在对 HTML 进行转义,因此用户可能会编写一些顽皮的东西(例如带有一些恶意 JS 代码的 &lt;script&gt; 标记)。确保您正在清除沿线某处的任何讨厌的 HTML。

      【讨论】:

        猜你喜欢
        • 2014-01-17
        • 1970-01-01
        • 2020-11-27
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        • 2015-01-17
        • 1970-01-01
        • 2019-07-29
        相关资源
        最近更新 更多