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中,可以使用#替代\(,因为\)是将参数进行了一个拼劲,但是#号的话,可以进行预编译。

posted @ 2023-04-16 01:37  King-DA  阅读(50)  评论(0)    收藏  举报