价格: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
扫一扫 加微信咨询