扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
SQL注入脆弱性的简单原理;
在编写执行sql语句的JDBC代码时,可以编写语句或preparedStatement。前者的问题是sql注入的漏洞。
[div][div]
Sql注入一般是指使用statement执行sql语句时,传入的字符串参数会作为SQL语句执行。如果字符串参数与SQL关键字混合,可能会导致一些严重的后果。
[div][div]
用户名和相应的密码存储在数据表中。登录检测是根据用户输入的用户名和密码使用select语句,找出用户名和密码都符合用户输入参数的结果。如果它们不满足条件,则验证失败,否则验证成功。
[div][div]
(表中有一个叫傅的用户)
[div][div]
你可以看到‘or’1 = 1被添加到用户传入的参数中。
[div][div]
结果,拼接的SQL语句变成了
[div][div]
Select * from用户其中用户名=' fu '或' 1 = 1' [div]
在这一行sql语句中,' 1 = 1' [div]
而之前的用户名='fu '是真的,
[div][div]
or的结果为真,就可以找到结果,就可以绕过密码登录了。
[div][div]
(也可以在符后加-号,可以注释掉and后的语句)
[div][div]
[div]
导入Java . SQL . connection;
导入Java . SQL . resultset;
导入Java . SQL . statement;
导入com . imooc . JDBC . utils . JDBC utils;
/*
*/
公共类JDBCDemo2 {
/*
*/
public static void main(String[]args){
[/div]boolean flag = jdbcdemo 2 . log in(" fu '或' 1=1 "," 111111111111
[/div]if(flag){
[/div][/div][/div][/div][/div][/div][/div][/div][/div][/div
[/div][div]]else {
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流