SQL注入
什么是SQL注入?
SQL注入是对web程序最常见的攻击之一。它是一种恶意攻击,通过向数据库服务器发送查询请求,会在查询语句中通过SQL添加恶意代码,从而对服务器造成损害,SQL注入的攻击目的是破坏服务器的安全性,通过恶意查询访问数据库服务器中的敏感数据。
实现方式:
- 1.结构化查询语言(SQL)注入:这种攻击方式通过在正常已有的SQL指令中加入恶意语句,从而改变数据库查询的结果,或者把数据库查询的结果暴露出来。
statement := "SELECT * FROM users WHERE name = ’" + userName + "’;"
上面的这个语句,可以在前端页面上的userName上添加 or 1=1 这样的脚本的话,就会导致将服务器上users表中的数据,全部读取出来。
SELECT * FROM users WHERE name = ’a’ OR ’t’=’t’;
防护措施
可以通过JDBC中的预编译来进行防护。
PreparedStatement prep = conn.prepareStatement("SELECT * FROM USERS WHERE PASSWORD=?");
prep.setString(1, pwd);
SELECT * FROM USERS WHERE PASSWORD='1 or 1=1'
PreparedStatement是通过占位符的方式,将参数进行替换,而不是简单的进行了一个参数的拼接。而是将输入的参数整个进行了替换。
如果在xml中,可以使用#替代\(,因为\)是将参数进行了一个拼劲,但是#号的话,可以进行预编译。
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/17322435.html

浙公网安备 33010602011771号