就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,访问帮助中心 /help/reopen-questions 以获得指导。
我正在开发一个项目,允许公众(每个人)通过 TinyMCE 为他们自己的项目页面插入 HTML。由于每个人都可以使用此功能,因此我需要一种 100% 安全的方式将 TinyMCE 输出插入到我的数据库中,并将其显示在另一个页面上,就像用户插入的那样。
XSS、SQL 注入和所有其他垃圾都不是我在新网站上想要的!我可以执行 htmlentities -> htmlspecialchars ,然后使用 htmlentities_decode ,但这是否 100% 安全,并且这是最好的方法?
在大多数情况下,通过使用准备好的语句可以轻松避免 SQL 注入。
如果您计划允许用户发布 HTML 标记,那么 XSS 会更加困难。你需要删除所有<script>
标签,全部on*
标签的属性,全部javascript:
url,即使如此,也可能无法完全保证输入 HTML 的安全。有一些图书馆,例如HTML净化器 http://htmlpurifier.org/ 这会有所帮助,但只要您允许 HTML,您就面临着让恶意内容通过的风险。
您可以使用实现 markdown 或 wikitext 等功能的库。这严重限制了用户可以输入的内容,同时仍然允许他们在一定程度上标记内容。它并不是完全可靠的(人们仍然可以发布到恶意网站的链接并希望用户点击它们,有些人会天真地实际这样做),并且如果没有某种类型,您将无法使用像 TinyMCE 这样的丰富编辑器插件,但清理 Markdown 比清理 HTML 要简单得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)