明辉站/应用软件/内容

什么是SQL注入?带你从零开始认识SQL注入

应用软件2023-07-09 阅读
[摘要]从零开始认识SQL注入 ,什么是SQL注入?sql注入就是本来我只有我能操作数据库,本来只是让你输入内容就走,而你却输入命令,从而在我不知情下操作数据库SQL注入1.什么是SQL注入看一下下面的案例场景,这是正常情况下的登陆场景:而当我们使用 用户名‘:– 的时候,密码随便输入也可以登陆成功↓这时...
从零开始认识SQL注入 ,什么是SQL注入?sql注入就是本来我只有我能操作数据库,本来只是让你输入内容就走,而你却输入命令,从而在我不知情下操作数据库

SQL注入

1.什么是SQL注入

a.png

b.png

sql注入就是本来我只有我能操作数据库,本来只是让你输入内容就走,而你却输入命令,从而在我不知情下操作数据库

2.漏洞的修复

动态拼接就是在java中java变量和sql语句混合使用:select * from user where userName=’”+userName+”’ and password = ‘”+password”’

3.参数化sql使用案例

            //建立数据连接
            conn=ds.getConnection();
            //1.设置prepareStatement带占位符的sql语句
            PreparedStatement ptmt = conn.prepareStatement("select * from user where userName = ? and password = ?");
            ptmt.setString(1, "张三");      //2.设置参数
            ptmt.setString(2, "123456");
            rs=ptmt.executeQuery();     

            while(rs.next()){
                System.out.println("登陆成功");
                return;
            }
            System.out.println("登陆失败");

参数化特点:

1.设置preparedStatement带占位符的sql语句

statement执行sql语句的方式:

stmt=conn.createStatement();
rs=stmt.executeQuery("select userName from user");

2.设置参数

PerparedStatement继承于Statement,这里主要使用的使他参数化sql的特性。

转:https://blog.csdn.net/qq_30258957/article/details/78145885

加:1.都是用来执行SQL的 PreparedStatement extends Statement;

2.Statement适合执行静态(无条件)SQL PreparedStatement适合执行动态(有条件)SQL;

3.PreparedStatement可以避免注入攻击;

相关文章:

一个自认为很安全的PHP防SQL注入 求破解

深入了解SQL注入和预防措施

相关视频:

防御sql注入-PHP实战商城开发视频教

以上就是什么是SQL注入?带你从零开始认识SQL注入的详细内容,更多请关注php中文网其它相关文章!


学习教程快速掌握从入门到精通的SQL知识。

……

相关阅读