Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Summernote防止PHP输入危险的HTML?_Php_Html_Summernote - Fatal编程技术网

如何使用Summernote防止PHP输入危险的HTML?

如何使用Summernote防止PHP输入危险的HTML?,php,html,summernote,Php,Html,Summernote,我最近发现了Summernote,它似乎是一个不错的应用程序,尽管我偶然发现了一个问题 您可以在进入源代码时添加恶意HTML代码,例如: <plaintext> <script> <h1> <p> 那么,如何使用PHP来防止这种情况呢?我确实希望用户能够使用某些样式标记,例如: <plaintext> <script> <h1> <p> 编辑器会自动使用它 我知道我可以继续使用str

我最近发现了Summernote,它似乎是一个不错的应用程序,尽管我偶然发现了一个问题

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

<plaintext>
<script>
<h1>
<p>

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

<plaintext>
<script>
<h1>
<p>


编辑器会自动使用它


我知道我可以继续使用str_replace()来检查字符串中是否有任何恶意HTML,但我认为一定有更简单的方法来执行此操作。

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

但是,您希望支持HTML,但并不真正希望支持所有HTML。因此,您需要一个完全不同的解决方案。是一种满足您需求的解决方案。它解析数据,只通过白名单标记。从他们的:


:使用或您可以使用可选参数指定所需的标记,其余标记将被剥离。我确实希望人们可以说,在这种情况下,只有<&>应转换为ascii码或其他任何名称。因此,不要剥离,只需替换为安全文本,并且只有在它是恶意的情况下。我相信您正在寻找,但我不确定您将如何应用于单个恶意标记。@Script47确实有效,尽管它适用于每个标记,例如,如果用户想要使用标签,这会造成混乱。这就是为什么我的第一条评论建议使用无标签解决方案,为您省去了大量筛选恶意标签的麻烦。问题是,它完全删除了其他恶意HTML,我想把恶意的HTML转换成安全的HTML。我还发现HTML净化器不支持HTML5,所以尽管它可以工作,但它确实允许一些可能是恶意的标记通过。你可以指定一个你想要保留的内容的白名单。而且,我怀疑它让任何恶意的东西通过。你累了吗?如果是的话,做一个bug报告。我将把它标记为答案,因为它可以工作。我还在这里找到了一个HTML5库:希望这就足够了。谢谢