【问题标题】:WMD Markdown and server-sideWMD Markdown 和服务器端
【发布时间】:2010-11-13 12:46:29
【问题描述】:

过去两天我在WMDMarkdown 上工作,但我没有找到安全的股票数据解决方案。我希望用户能够在我的网站上发布 HTML/XML (带有 WMD)。

目前,我以 Markdown 格式存储数据,但如果我禁用 JavaScript,用户可以轻松推送 XSS。如果我 strip_tagshtml_entities 所有数据我都会丢失用户 HTML/XML 。我该怎么做?

在我看来,我必须 html_entities 只是 pre /pre 之间的代码,但是如何?!我的数据在 Markdown 中。

之后,我该怎么做才能禁止 XSS 属性:

<img src="javascript:alert('xss');" />

【问题讨论】:

    标签: php markdown wmd


    【解决方案1】:

    要“清理”您的 HTML,您可以使用像 HTML Purifier 这样的工具

    基本上,它允许您指定允许哪些标签/属性,并且只保留这些。

    它还生成有效的 (X)HTML 代码作为输出——这很好。

    您可以在demo page 上看到一个几乎完全是您发布的 XSS 的示例,顺便说一句;-)

    例如,您可以尝试使用以下 HTML:

    test <img src="javascript:evil();" onload="evil();" /> 
    test <img src="http://www.google.com/a.Png" /> test2
    

    输出是:

    test  test <img src="http://www.google.com/a.Png" alt="a.Png" /> test2
    

    没有保留带有 XSS 的img 标签;另一个有;并且添加了一个alt 属性,以符合标准。

    它可能无法解决你所有的问题,但如果你让用户可以输入 HTML,它是否真的有用(我敢说“它是必须的”吗?) p>

    【讨论】:

    • 感谢您的回复。我知道 html 净化器和其他“消毒剂”。真正的问题是:如何才能不丢失 html 基本布局(通过 wmd)和用户在 .. 中插入的 html
    • 基本布局> 如果只是一些简单的标签,您可以将它们定义为 HTMLPurifier 的“允许”,因此它们不会被删除。如果您想允许在特殊标签之间插入 HTML,请查看此答案:stackoverflow.com/questions/1155443/…;通过混合它和 HTMLPurifier,你可能会得到你想要的?
    猜你喜欢
    • 2011-01-04
    • 2010-11-14
    • 2010-11-04
    • 2010-12-22
    • 2011-09-04
    • 2011-06-17
    • 1970-01-01
    • 2011-01-06
    • 2011-04-18
    相关资源
    最近更新 更多