我正在使用Mysqli的预备声明。这将输入作为文本并将其作为文本提交,从而防止SQL注入。
当我从数据库中读取文本时出现问题。我读到的文字在浏览器中执行!
例如 - 如果我写作输入:
<b>Hello</b> how r u?<br>
<script> alert('He is fine dnt wry!') </script>
这会直接进入数据库。但是当我使用SELECT
查询从数据库中读回来并显示它时,我的<b>
代码和<script>
代码会被执行而不是显示!
如何防止这种情况发生?
答案 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