• 登录
社交账号登录

预防SQL注入攻击

价格:0.00元

库存:9999个

购买数量:

什么是SQL注入?

SQL注入是一种常见的网络安全漏洞,它允许攻击者通过操纵应用程序的输入来执行恶意的SQL查询。这种漏洞发生在应用程序没有正确验证、过滤或转义用户提供的输入数据时。攻击者可以利用这个漏洞来执行未经授权的数据库操作,例如删除数据、修改数据或者获取敏感信息等。

防止SQL注入,保障网站安全运行很重要,避免不法分子通过网站程序漏洞插入一些非法信息,导致网站不能正常运行,特别是一些重要的网站,SQL注入可能导致数据被破坏的风险,涉及到财产性的数据可能被窃取。


防止SQL注入处理方法如下:


1. 服务端能用POST传值尽量使用POST提交,不提倡用GET传值;

2. 特殊情况下服务端使用GET传值时,防止参数携带SQL语法注入:

01.通过将用户输入作为参数传递给 SQL 查询,查询语句本身不会被修改;

02.GET传值时当参数无值时,可能会出现一个报错访问页面,这时,提前给参数赋值默认值,避免报错信息泄露;

03.当不法分子通过SQL语句传值时,提前进行拦截阻断代码往下执行,避免参数数据被插入到数据表中,不法分子通常使用的查询语句关键词有:SELECT FROM * % WHERE SLEEP等等;

3. 数据校验:

01.对用户传递过来的数据进行严格的数据校验,如果接收的参数为数字型参数,判断参数值是否为数字型,如果不是数字型,拒绝处理;

02.如果接收的参数为字符型参数,对单引号、双引号、反斜杠和NUL字节进行转义,SQL 查询中的某些字符,如单引号 (' ') 和双引号 (" "),具有特殊含义,使用转义字符(例如反斜杠)可以防止这些字符被解释为 SQL 语句的一部分。

4. 使用nginx反向代理防止SQL注入:

nginx作为反向代理服务器,可以在应用层进行安全防护。通过配置nginx,可以防止SQL注入攻击,可以在nginx配置文件中添加特定的规则来过滤掉恶意的请求。


PHP服务端部分代码块参考如下:


   //1.阻止SQL注入:判断传参变量是否为数字
   if (!is_numeric($_GET['start']) || !is_numeric($_GET['num'])) {
//        halt("变量不是一个数字");
       return json_encode('Variables are not number', 320);
   }

   $openid = $_GET['openid'];

   //2.阻止SQL注入:判断是否有SQL语句查询
   $pos = strpos($openid, "select");
   $pos2 = strpos($openid, "from");
   $pos3 = strpos($openid, "*");
   $pos4 = strpos($openid, "%");
   $pos5 = strpos($openid, "sleep");
   $pos6 = strpos($openid, "'");
   $pos7 = strpos($openid, '"');
   if ($pos !== false || $pos2 !== false || $pos3 != false || $pos4 != false || $pos5 != false || $pos6 != false || $pos7 != false) {
       return json_encode('Risky statements', 320);
   }

   //do something

Tag: 网站应用技术 网站安全处理