在PHP网页程序实际应用中,为了应对不断扫描的SQL漏洞扫描工具,我们应该对网页传递的参数进行一系列的处理。
第一步就是将获取来的参数转换为HTML实体,这样可以应对一些在参数中加入<script>或 sql语法重置的语句。
这时候在PHP中我们就需要一个类似于ASP的Server.HTMLEncode一样的方法。
PHP当然也有类似这样的方法那就是 htmlspecialchars,而且还提供一个转回方法 htmlspecialchars_decode()
官方说明:
从官方描述我们可以发现,它把预定的几个字符全部转换成为HTML实体,这几个字符就是SQL注入语句的命脉,不管怎么变,都需要有这几个字符。所以我们使用 htmlspecialchars完全可以作为防止SQL注入的第一步。
下面来看一个实例:
echo htmlspecialchars("<script>")
使用 htmlspecialchars 转换后我们得到的结果如下:
<script>gt;
可以看到 <> 这两个符号已经被转义为HTML实体了,这样最初期的 SQL注入里面的JS代码就跑不起来了。
当然要防止SQL注入这仅仅是第一步而已,我们还需要对获取的参数进行多次对比、替换、真实性检验等。不同的应用场景有不同的处置方式。以后在使用过程中碰到的话会再更新。