码迷,mamicode.com
首页 > 数据库 > 详细

SQL注入攻击

时间:2018-07-03 22:30:10      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:sql语句   用户名   查询   特殊字符   result   pass   数据查询   word   账号   

SQL注入攻击

在页面中输入账号和密码时,密码的设置为‘or ‘1‘=‘1时,在进入后端服务器对数据库中的人员信息进行查询时,组成的查询语句为:

select * from hhuser where nick=‘zhangsan‘ and passwords=‘ ‘ or ‘1‘ = ‘1‘,该语句无论用户名和密码是啥都可以查到满足‘1’=‘1’的条件,是查询的用户列表不为空。还可以利用SQL攻击对数据造成不可挽回的灾难。如在密码后面加上‘;drop table aaa,就会对数据表进行删除。

SQL注入防范

  1、使用预编译语句。

  可以使用预编译语句PreparedStatement进行数据查询,通过Statement对象执行SQL语句,需要将SQL语句发送给DBMS,有DBMS编译后再执行。预编译实例:

  String sql = “select * from hhuser where nick = ? and passwords = ?”;

  PreparedStatement st = conn.prepareStatement(sql);

  st.setString(1,nickname);

  st.setString(2,password);

  ResultSet rs = st.executeQuery();

  2、使用ORM框架

  使用IBATIS、Hibernate等框架,因为这些框架对关键字或者特殊字符进行转移。

  3、避免免密码明文存放。

  4、处理好响应的异常。

SQL注入攻击

标签:sql语句   用户名   查询   特殊字符   result   pass   数据查询   word   账号   

原文地址:https://www.cnblogs.com/youzhongmin/p/9255693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!