MySQL怎么避免SQL注入

访客5年前黑客资讯1407

 假如您经过网页获取用户输入的 数据 并将其刺进一个MySQL数据库,那么就有可能发生SQL注入安全的 问题 。
本章节将为咱们介绍怎么避免SQL注入,并经过脚原本过滤SQL中注入的字符。 

所谓SQL注入,便是经过把SQL指令刺进到Web表单递送或输入 域名 或页面恳求的查询字符串,终究到达诈骗 服务 器 履行歹意的SQL指令。


咱们永久不要信赖用户的输入,咱们有必要确定用户输入的数据都是不安全的,咱们都需求对用户输入的数据进行过滤处理。 
以下实例中,输入的用户名有必要为字母、数字及下划线的组合,且用户名长度为 8 到 20 个字符之间: 
if (preg_match("/^w{8,20}$/", $_GET['username'], $matches)) { $result = mysql_query("SELECT * FROM users WHERE username=$matches[0]"); } else { echo "username 输入反常"; } 让咱们看下在没有过滤特别字符时,呈现的SQL状况: 
// 设定$name 中刺进了咱们不需求的SQL句子 $name = "Qadir'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 以上的注入句子中,咱们没有对 $name 的变量进行过滤,$name 中刺进了咱们不需求的SQL句子,将删去 users 表中的一切数据。 
在PHP中的 mysql_query() 是不允许履行多个SQL句子的,但是在 SQLite 和 PostgreSQL 是能够一起履行多条SQL句子的,所以咱们对这些用户的数据需求进行严厉的验证。 
避免SQL注入,咱们需求留意以下几个关键: 
1.永久不要信赖用户的输入。对用户的输入进行校验,能够经过正则表达式,或约束长度;对单引号和 双"-"进行转化等。 2.永久不要运用动态组装sql,能够运用参数化的sql或许直接运用存储进程进行数据查询存取。

3.永久不要运用管理员权限的 数据库 衔接,为每个运用运用独自的权限有限的数据库衔接。

4.不要把秘要 信息 直接寄存,加密或许hash掉 暗码 和灵敏的信息。

5.运用的反常信息应该给出尽可能少的提示,更好运用 自 界说的错误信息对原始错误信息进行包装

6.sql注入的检测办法一般采纳辅佐软件或 网站 渠道来检测,软件一般选用sql注入检测工具jsky,网站渠道就有亿思网站安全渠道检测工具。MDCSOFT SCAN等。选用MDCSOFT-IPS能够有用的防护SQL注入,XSS进犯等。

避免SQL注入 
在脚本语言,如Perl和PHP你能够对用户输入的数据进行转义从而来避免SQL注入。 
PHP的MySQL扩展供给了mysql_real_escape_string()函数来转义特别的输入字符。 
if (get_magic_quotes_gpc()) { $name = stripslashes($name); } $name = mysql_real_escape_string($name); mysql_query("SELECT * FROM users WHERE name='{$name}'"); Like句子中的注入 
like查询时,假如用户输入的值有"_"和"%",则会呈现这种状况:用户原本仅仅想查询"abcd_",查询成果中却有"abcd_"、"abcde"、"abcdf"等等;用户要查询"30%"(注:百分之三十)时也会呈现问题。 
在PHP脚本中咱们能够运用addcslashes()函数来处理以上状况,如下实例: 
$sub = addcslashes(mysql_real_escape_string("%something_"), "%_"); // $sub == %something_ mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'"); addcslashes() 函数在指定的字符前增加反斜杠。 
语法格局: 
addcslashes(string,characters) 参数    描述 string    必需。规则要查看的字符串。 characters    可选。规则受 addcslashes() 影响的字符或字符规模。

相关文章

高校SQL注入防治扼要计划

 1、避免SQL注入的动机 近来教育职业的信息安全问题真是一波未平一波又起:连续发作多个高校网站体系被更改,影响恶劣;高校密布被爆SQL注入缝隙,触及80%以上的高校;教育职业成为电信欺诈的重灾区,据...

Java Web 工程源代码安全审计实战,第 4 部分: 环境加固

前语 本文是 Java Web 工程源代码安全审计实战的第 4 部分,也是最终一部分,根据 WebGoat 工程,解说源码审计出产环境布置装备问题。相比较于前三部分各种高危缝隙的审计和整改。环境布置部...

怎么全面防护Webshell(下)?

 在进行查询时,最要害的部分之一是找到黑客的进口点,尤其是当运维团队将受进犯的服务器康复正常后,咱们意识到有许多的服务器现已被各种webshell、rootkits和暗码导出东西感染时。 需求快速的...

怎么经过乱用SSLTLS绕过Web应用程序防火墙

介绍 近些年来,Web安全现已逐步变成了IT安全范畴里十分重要的一个部分。Web运用的优势就在于开发人员能够在较短的时间内集成各种要害服务,并且保护难度也比传统的桌面端运用程序要低许多。除了规划新的...

Django开发与攻防测验(入门篇)

最近在培训包含在一些竞赛中,python结构方面的攻防需求呈现的越来越频频。 尽管python结构相关于Java、php等的广泛度还略低一点(当然现在的盛行程度现已越来越高了),可是咱们并不能够因此而...

向Web服务器投递恶意挖矿软件的蠕虫-黑客接单平台

实践中,面向公共互联网供给服务的体系或服务器,都是处于边际方位的。所以无论是物联网设备仍是企业级服务器,只要能被外界访问到,那就会无时无刻被进犯。 最近,咱们发现了一种进犯方法,多个公司Apache...