【发布时间】:2019-06-05 22:25:17
【问题描述】:
我正在开发一个迷你博客,它允许用户使用所见即所得编辑器将帖子添加到网站,因此我将把这篇帖子存储在我的数据库中。
研究过降价后,我得出的结论是它不适合目的,因为我需要上传本地视频,这就是为什么我现在计划将所见即所得编辑器中的 HTML 存储到我的数据库中。
不过,我确实对 SQL 注入和 XSS 攻击有些担忧,但我研究了一种解决方案,即 HTML 净化器。
如果我使用 HTML 净化器来删除不需要的 HTML 标签,那么这是将 HTML 存储在我的数据库中的安全解决方案吗?
【问题讨论】:
-
只要您安全地插入数据(即带有参数绑定的准备好的语句),我会说它可能足够安全,但这只是我对这个主观的看法问题
-
您可以使用有限版本的所见即所得编辑器,也可以使用 strip_tags PHP 函数只允许几个 HTML 标签。为了防止 SQL 注入,您必须以适当的方式对值进行转义,或者准备语句。
-
我明白这显然是一个主观问题,但在这种情况下(Markdown 不支持本地视频嵌入)将 HTML 存储在数据库中并正确净化它被认为是最佳实践?
-
我不会存储 HTML,它只是自找麻烦。你如何确定你已经过滤了所有潜在的危险标签?我会坚持为文本内容存储降价,并找到另一种附加视频的方式。例如,发明您自己的 markdown 语法来嵌入视频,然后在您的应用呈现内容时,替换原始 html 标签(以安全的方式)来嵌入视频。 Markdown 也允许原始 html。见forums.apricitysoftware.com/t/…
-
感谢您的意见。由于 WYSIWYG 编辑器输出 HTML ,如果我剥离标签并净化然后将其转换为 markdown(添加我自己的自定义视频 markdown 语法),这将是实现我想要的更安全和“更好的实践”的方式。感谢所有的 cmets,我只是想弄清楚专业人士将如何处理这种情况。
标签: php html mysql markdown htmlpurifier