什么是SQL注入(SQL Injection)?
SQL注入是一种未将输入参数进行过滤,然后将SQL代码添加到输入参数中并传递到SQL服务器解析并执行达到预想之外的一种攻击手法。这种SQL注入可以欺骗服务器并且执行一些非法的SQL语句从而导致信息泄漏及其他安全问题。SQL注入是安全问题中最高发的问题。
SQL注入产生原理
1. 开发人员无法保障所有的输入都已经经过安全过滤,包括GET请求,POST请求,Cookie以及相应的HTTP头信息等。
2. 攻击者在页面上恶意提交特殊字符,利用发送给SQL服务器的输入参数构造可执行的SQL代码。
3. 后段数据库未做安全配置。
SQL注入之万能密码
在管理员登陆系统后台时候,一般严重当前用户都是痛殴一条查询用户是否存在的SQL,如下
原验证登陆语句:
SELECT * FROM user WHERE Username= '".$username."' AND Password= '".md5($password)."'
但是在输入 1′ or 1=1 or ‘1’=’1 万能密码语句变为:
SELECT * FROM user WHERE Username='1' OR 1=1 OR '1'='1' AND Password='EDFKGMZDFQWERRFGGG'
被注入后的SQL语句都是返回true的,是可以登陆成功的。其实就是绕过数据库验证机制直接执行SQL语句然后结果永远返回有数据(如果数据表是有数据的情况)。
防止SQL注入方法
1. 永远不要信任用户的输入。对用户的输入进行强制校验,可以通过正则表达式,或限制长度,对单引号和 双"-"进行转换等。
2. 尽量不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3. 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4. 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5. 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6. sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。
参考来源