允许用户输入HTML - 这是明智的吗?

时间:2012-01-11 17:36:14

标签: html validation code-injection

我的网站允许用户(拥有免费帐户的任何人)输入文字。到目前为止,我一直在剥离HTML标签等,以确保它们不会输入任何恶意内容。但是,现在,客户端询问是否可以允许用户输入html。

这背后的想法是,一些用户可能希望添加更复杂的内容,例如表单。无论他们输入什么,都会显示在另一个页面上,以后 - 所以他们可能想要一张其他人可以填写并提交的表格。

我的问题是,这有什么风险?显然我会逃避角色以降低注射攻击的风险,但我还需要注意什么呢?

或者这是否存在风险,我根本不应该这样做?

2 个答案:

答案 0 :(得分:2)

存在许多风险 - XSS最为人所知。

如果您转义字符,则不会显示HTML(例如,而不是您将看到<a href="http://example.com">link</a>的链接。)

允许HTML是一种安全的方式非常困难。

考虑使用StackOverflow上使用的降价编辑器 - wmd-new

答案 1 :(得分:1)

一个挑剔的位......

  

帮助确保他们无法输入任何恶意内容

永远不要假设您的安全性已经完成:)现在,回到实际的答案......


这里最大的安全问题是Cross-site Scripting

这一点我觉得特别令人不安:

  

他们可能想要一张其他人可以填写并提交的表格

提交什么?他们还以某种方式设计服务器端功能吗?或者他们是否在撰写表格以提交给某些外部资源?这听起来很危险。

然后你会进入script标签之类的东西。这里可以做很恶意的事情。如果用户足够精明,可以制作自己的HTML表单(手工使用?或者正在使用的工具?)将数据提交给其他资源,那么他们可能会非常狡猾地写一些JavaScript。

使用editors designed for that可以实现简单的标记效果。但形式是一个全新的球赛。这听起来很危险。