我的网站允许用户(拥有免费帐户的任何人)输入文字。到目前为止,我一直在剥离HTML标签等,以确保它们不会输入任何恶意内容。但是,现在,客户端询问是否可以允许用户输入html。
这背后的想法是,一些用户可能希望添加更复杂的内容,例如表单。无论他们输入什么,都会显示在另一个页面上,以后 - 所以他们可能想要一张其他人可以填写并提交的表格。
我的问题是,这有什么风险?显然我会逃避角色以降低注射攻击的风险,但我还需要注意什么呢?
或者这是否存在风险,我根本不应该这样做?
答案 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可以实现简单的标记效果。但形式是一个全新的球赛。这听起来很危险。