ctf从入门到放弃:SQL漏洞的常见防范190510

SQL Inject注入漏洞的防范:
 代码层面

  1. 对输入进行严格的转义和过滤
  2. 使用预处理和参数化(Parameterized )

 网路层面

  1. 通过WAF设备启用防SQL Inject注入策略(或类似防护系统)
  2. 云端防护(360网站卫士,阿里云盾等)

代码层面:
PHP防范转义+过滤

ctf从入门到放弃:SQL漏洞的常见防范190510

但其实效果并不是太好。
因为数据库版本会更新的,
已更新后可能会产生新的函数,新的语法,
那么就意味着存在新的注入点,
那么之前的代码防范又全部要更新,
这是一个极其麻烦的过程。

推荐的做法:使用PDO的prepare预处理(预处理+参数化)
ctf从入门到放弃:SQL漏洞的常见防范190510

这个啥意思。
这里的意思是说,
先对输入的东西做个处理,
然后按照一种特殊的形式传进去,
这个时候传进去的,被当作一个整体,不会再有分开来执行的效果,
同时许多数据库语言也支持参数化,这是较为安全,方便的。

SQL Inject注入漏洞的防范-网络防护

ctf从入门到放弃:SQL漏洞的常见防范190510

直接让黑客随便搞,
然后用一堵防火墙将所有的注入语句隔离掉。
ctf从入门到放弃:SQL漏洞的常见防范190510

最好从代码静态和网络动态多方面防护。