Web安全漏洞分析-SQL注入
SQL注入的定义
由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
SQL注入
1. 定义 SQL注入的定义 由于程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQL注入的本质 对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。SQL注入漏洞,就是将用户可控的数据拼接进了SQL语句中,一起提交到了数据库执行。攻击者通过注入语句,改变SQL语句执行逻辑mssql注入,通过控制部分SQL语句,攻击者可以查询数据库中任何自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限。 某银行信用卡商城SQL注入漏洞 ***.com.cn/BusinessCityWeb/ecity.do?func=queryClassFun&dom=中参数goods_price、brand存在SQL注入漏洞; 某输入法网站Ajax页面POST型SQL注入漏洞 该网站的Ajax页面是***.***.com/zt/acgn/pc/ajax_post.php,POST内容为:qq=CasterJs&type=pc&nickname=CasterJs&entries=CasterJs,Web应用程序未过滤参数type,导致存在POST型注入漏洞。使用sqlmap工具,可以注入得到数据库名 2.经典SQL注入代码示例 1)Servlet示例 2)mybatis示例 3. SQL注入防护 a)对输入点进行过滤(不是根本解决方法 可能被绕过) 建议使用ESAPI针对输入数据进行过滤。 b)预编译方式访问数据库 预编译本质上也是对参数的过滤,只不过由官方实现。 c)使用存储过程 4. MyBatis的SQL注入防护 模糊查询: MySQL:select * from table where name like concat(‘%’,#{name},’%’) Oracle:select * from table where name like ‘%’|| #{name} || ’%’ SQL Server:select * from table where name like ‘%’+#{name}+’%’ DB2:select * from table where name like concat(‘%’,#{name},’%’) (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |