从textarea清理HTML

时间:2010-07-29 08:01:11

标签: html security html-form

我有一个包含两个textareas的页面,注册用户可以使用HTML代码填充它们。第一个有TinyMCE(所以HTML被清理),但另一个没有,因为我希望代码插入来自其他网站的嵌入代码(主要是提供地图的网站,例如谷歌地图,MapMyRace.com等) 。但问题是,其他网站可能会提供不同的标记,而不仅仅是<embed><iframe>。所以我不能剥离标签因为那时我可能会删除我不知道其他网站提供的标签。我将这两个textareas中的HTML保存到我的数据库中,以便检索并显示为其他页面的一部分。

您有什么建议可以让这个设置更安全吗?或者我应该完全禁止在第二个textarea中自由输入HTML? (或者......我让用户勾选一个复选框,说“我对我插入的代码的行为承担全部责任”.. LOL)

您的意见非常感谢:)

由于

2 个答案:

答案 0 :(得分:1)

让您的用户使用任意HTML是危险的。你可能想要一个黑色和白色的标签列表,你不允许和允许(分别)。

答案 1 :(得分:1)

简短的回答是:免费的HTML是不安全的,必须避免。没有什么可以阻止您的用户创建iframe,将用户重定向到某个有害的网页或在您的网页上放置广告或破坏您的网站。

我最喜欢这个问题的方法是允许用户在文本框中粘贴链接(没有“嵌入页面”iframe代码)。然后我使用正则表达式来识别粘贴的链接(是youtube,Bing地图,......),然后我从粘贴的链接创建HTML,这对于大多数iframe提供商来说并不复杂。这对你来说是更多的工作,它限制了你可以放在你的页面上的API,但它是安全的。