SQL Inject注入漏洞的防范

SQL Inject注入漏洞的防范

SQL对应的措施分类

  • 代码层面
    1.对输入进行严格的转义和过滤
    2.使用预处理和参数化(Parameterized)
  • 网络层面
    1.通过WAF设备启用SQL Inject注入策略(或类似防护系统)
    2.云端防护(360网站卫士,阿里云盾等)

PHP防范转义+措施

它的意思就是我们可以以Php为例我们可以写一个函数如下图所示的第三行可以对前端的输入进来的数据进行转义,比如里面的特殊符号:“”,‘’,-等等用myaqli提供的方法real_escape_对它进行转义 我们也可以过滤,其实在输入层面做相关的安全措施也没有问题,但是不是最好的方法,再输入这个维度做出对应的防范所示的转义+过滤是可以用的,但是我们这是数据库或者我们的一些代码的特性升级的比较快,转义和过滤可能会导致一些疏忽

转义举例

function escape($link,$data){
   if(is_string($data)){
      return mysqli_real_escape_string($link,$data);
   }
   if(is_array($data)){
        fareach ($data as $key=$val){
            $data[$key]=escape($link,$val);
        }
   }
   return $data;
 }

过滤举例

str_replace("%"," ",$_POST['username']),把post里面的数据含有%的替换成空

那什么是最好的方法呢?
那就是使用PDO的prepare预处理(预处理+参数化)(是以Php为例)

PDO是同一各种数据的访问接口,我们可以直接通过它的函数和方法来操作数据库。

当你对数去参数进行操作的时候,我们要想一下为什么会形成数据注入漏洞是因为你传进来的参数直接被拼接到sql里面去了,所以造成了sql注入漏洞,但是在PDO里面,它去写sql的时候它不会直接去把参数传进去,而是用这种占位符如下图“?”,用参数化的占位符的方式去写这个参数,然后它去跟数据交互,不管你输入的是什么,最终回传到sql里面的时候,它都会把它当成一个整体,而不会对原有的sql语句去进行拼接,可以用execute去抓一下数据包。

交互: 首先它会根据预处理先把这段sql语句用占位符代替的这个参数内容的这条语句去跟数据库的区中去交互,然后进行预处理,先把sql这条逻辑进行编译,然后这个时候把参数传进去,而不是拼接的方式传进去

$username=$_GET['username'];//前端传进来的对应的参数
$password=$_GET['password'];

try{
    $pdo=new PDO('myaql:host=localhost;dbname=ant',''root','root');
    $sql="select*from admin where username=?and password=?";
    $stmt=$pdo->prepare($sql);//先不用传参数,先预处理
    //  var_dump($stmt);
    $stmt->execute(array($username,$password));
    //这个时候再把参数传进去,以索引的方式传进去,而不是拼接,就成功防止了注入
}catch (PDOException $e){
      ecjo $e->getMessage();
}
?>
    

在这里插入图片描述
现在很多甲方公司都会用我们的互联网的出口或者是我们的这个应用服务器的前面,应有防火墙,安全也不能依赖于这个防火墙,也不能完全相信说后端开发人员代码完全没有问题,所以在测试时这两个测试网是要同时推进的,第一我们要推进开发人员去安全的去写代码,去使用预处理和相关的数据库操作,第二我们同样会在我们的应用去部署相对应的防火墙;这样的话可就相当于是从两个维度都进行的相关的措施。

应有防火墙的逻辑:仅是你的网站存在sql注入漏洞但是攻击者,它会通过网络来利用你的这个漏洞的时候,他回去传一些对应的playrode,与测试的playrode的一样,这个防火墙就会把playrode识别出来,一旦你的请求里面携带了这种playrode的恶意的请求,它会帮你阻断掉

在这里插入图片描述

我们本地的worb应用防火墙还有一些云画符,所谓云画符就是说,我们现在有很多企业服务都会过云端,攻击者他会解析到这个IP地址可能是我们这个云厂商提供的一个IP,当你的流量通过你的云端再转化到你的真实的服务器上去的时候,那这个云端的这个云场实际上就在上面提供了这个云画符,这个云画符也可以制作DDOS清洗和SDN加速等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值