SQL注入攻击

Posted 没昵称可用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入攻击相关的知识,希望对你有一定的参考价值。

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注入攻击?

求教谁给讲讲SQL注入攻击的步骤

sql注入攻击的原理

常见sql注入的类型

针对sql注入攻击,都有哪些防范措施

什么是SQL注入式攻击 如何防范