网站SQL注入漏洞的原理及解决方案

2022-11-09 11:25 实用知识
SQL 注入产生的原因:程序开发过程中不注意规范书写 sql 语句和对特殊字符进行过滤,深圳网站建设哪家好,导致客户端可以通过全局变量 POST 和 GET 提交一些 sql 语句正常执行。


SQL注入脆弱性的简单原理;

[div]

在编写执行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]

密码=' 11111111呈贡网站优化策划11 '。

[div]

在这一行sql语句中,' 1 = 1' [div]

和password =' 111111111 '将被判断为flase(因为密码不是111..).

[div]

而之前的用户名='fu '是真的,

[div][div]

or的结果为真,就可以找到结果,就可以绕过密码登录了。

[div][div]

(也可以在符后加-号,可以注释掉and后的语句)

[div][div]

[div]

包com . imooc . JDBC . demo 1;

导入Java . SQL . connection;

导入Java . SQL . resultset;

导入Java . SQL . statement;

导入com . imooc . JDBC . utils . JDBC utils;

/*

[div]
*登录验证器验证sql注入漏洞。

*/

公共类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 {

微信与项目经理沟通

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

阅读
上一篇:APP推广的方法和常见问题
下一篇:应对网站用户大量流失的几点建议