如何防止标签和脚本在HTML中执行?

时间:2014-06-23 22:04:19

标签: javascript php jquery mysql mysqli

我正在使用Mysqli的预备声明。这将输入作为文本并将其作为文本提交,从而防止SQL注入。

当我从数据库中读取文本时出现问题。我读到的文字在浏览器中执行!

例如 - 如果我写作输入:

<b>Hello</b> how r u?<br>
<script> alert('He is fine dnt wry!') </script>

这会直接进入数据库。但是当我使用SELECT查询从数据库中读回来并显示它时,我的<b>代码和<script>代码会被执行而不是显示!

如何防止这种情况发生?

2 个答案:

答案 0 :(得分:0)

echo htmlentities("<b>Hello</b> how r u?<br>
<script> alert('He is fine dnt wry!') </script>");

答案 1 :(得分:0)

在将代码渲染到屏幕之前,您可以使用以下代码。

string htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )

他的功能与htmlspecialchars()相反。它将特殊的HTML实体转换回字符。

查看手册here