PHP不会忽略html标签

问题描述 投票:1回答:1

我有输入框,用户在其中输入字符串

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

但在我将值保存到数据库之前,我已经使用了strip_tags函数。它igigrs图像标记,但字符串“/>保存在数据库中。

我怎么能克服这一点。

php strip-tags
1个回答
0
投票

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

strip_tags函数在格式良好的HTML上运行良好,并且您的示例不是有效的。

您可以选择编写一个自定义代码,根据其性质“清理”输入。例如,如果输入应收集某人的年龄,请删除任何不是数字的内容。您也可以为姓名,电话等做同样的事情。

当然,我们作为开发人员,无法预见用户可以进入的所有可能的非意义(有意或无意),有时我们最终会在数据库中得到这样的数据。这就是为什么在HTML中打印数据之前逃避数据总是一个好主意。所有框架和模板引擎都已经为您完成了。如果你没有使用框架,你可以使用htmlentities函数 - http://php.net/manual/en/function.htmlentities.php

htmlentities会使任何HTML保留字符保存,不会破坏您的页面。例如:

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

会导致:

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

一旦通过浏览器呈现,看起来像:

enter image description here

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