PHP不会忽略html标签

时间:2019-03-08 10:11:43

标签: php strip-tags

我有一个输入框,用户在其中输入了

之类的字符串
 "/> <img src=xxx onError=alert('test is here')

但是在我将 strip_tags 功能保存到数据库之前,我已经使用过。它获得了图像标签,但字符串“ />被原样保存在数据库中。

我该如何克服呢?

1 个答案:

答案 0 :(得分:0)

老实说,不幸的是没有人去解决。

strip_tags 函数在格式良好的HTML上效果很好,您的示例无效。

您的选择之一是编写一个自定义代码,根据其性质“清除”输入。例如,如果输入应收集某人的年龄,则除去所有非数字的内容。您可以对姓名,电话等进行相同的操作。

当然,作为开发人员,我们无法预见用户可以(有意或无意)输入的所有可能的废话,有时我们最终会在数据库中获得此​​类数据。这就是为什么在将数据打印到HTML中之前转义数据始终是一个好主意的原因。所有的框架和模板引擎已经为您完成了。如果您不使用框架,则可以使用 htmlentities 函数-http://php.net/manual/en/function.htmlentities.php

html实体将保存所有HTML保留字符,并且不会破坏您的页面。例如:

htmlentities("/> <img src=xxx onError=alert('test is here')");

将导致:

/&gt; &lt;img src=xxx onError=alert('test is here')

并通过浏览器呈现后,如下所示:

enter image description here