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注入攻击的主要内容,如果未能解决你的问题,请参考以下文章