在mysql DB中存储HTML的最佳实践

问题描述 投票:0回答:2

我正在开发一个迷你博客,允许用户使用WYSIWYG编辑器向网站添加帖子,因此我将把这篇文章存储在我的数据库中。

研究过markdown后,我得出的结论是它不适合用途,因为我需要上传本地视频,这就是为什么我现在计划将WYSIWYG编辑器中的HTML存储到我的数据库中。

然而,我确实对SQL注入和XSS攻击有一些担忧,但是我研究了一种HTML净化器的解决方案。

如果我使用HTML净化器删除不需要的HTML标签,那么这是一个安全的解决方案来将HTML存储在我的数据库中吗?

php html mysql markdown htmlpurifier
2个回答
1
投票

在数据库中存储HTML本质上不安全,不仅仅是存储纯文本本质上是不安全的。通过使用预准备语句和适当的占位符,可以轻松地减少SQL注入的风险。转义既不是必需的,也不是防止SQL注入的最佳实践。准备好的陈述是。

相反,XSS和其他与HTML相关的vunerabilities与数据库无关,也与从不受信任的来源向观看者呈现HTML有关。如果HTML只是存储在文件中而根本没有数据库,那么就会存在相同的漏洞,因此不需要保护数据库免受恶意HTML的攻击。数据库不了解或存在HTML内容中包含的内容的漏洞,因为只要您的数据库交互使用预准备语句,它就不会再次呈现或解释HTML。没有可接受的理由来避免这些。

为了夸大这一点,将包含病毒的文件作为blob存储在数据库中是完全安全的,因为数据库不会像代码一样执行存储在其中的数据。该漏洞将发生在下载这些病毒的用户身上。


0
投票

你可以在sql中存储html ...但是先将它们转义。

看这里的例子......

http://php.net/manual/en/function.html-entity-decode.php

© www.soinside.com 2019 - 2024. All rights reserved.