如何使用Summernote防止PHP输入错误的HTML?

时间:2016-01-03 23:04:52

标签: php html summernote

我最近发现了Summernote,看起来这是一个不错的应用程序,虽然我偶然发现了一个问题。

您可以在进入源代码时添加恶意HTML代码,例如:

<plaintext>
<script>

那么如何使用PHP来防止这种情况呢?我希望用户能够使用某些样式标签,例如:

<h1>
<p>

编辑器自动使用。

我知道我可以继续使用str_replace()来检查字符串中是否包含任何恶意HTML,但我认为必须有一种更简单的方法。

1 个答案:

答案 0 :(得分:1)

通常,这里的问题是你在HTML的上下文中使用文本而不正确地转义所有保留的实体,这可能导致像你描述的那样注入任意HTML。 htmlspecialchars()是此问题的正常解决方案。

但是,您希望支持HTML,但并不是真的想支持所有HTML。因此,您需要完全不同的解决方案。 HTML Purifier是一种可以满足您需求的解决方案。它解析数据并仅传递列入白名单的标签。来自documentation

require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);