2

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

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

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

之后,我可以做些什么来禁止 XSS 属性:

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

1 回答 1

2

要“清理”您的 HTML,您可以使用类似的工具HTML Purifier

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

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

您可以在演示页面上看到一个示例,它几乎与您发布的 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

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

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

于 2009-07-23T20:07:34.103 回答