旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

什么是SQL注入?带你从零开始熟悉SQL注入【MySQL教程】,SQL注入

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:28评论:0


导读:从零开始熟悉SQL注入,什么是SQL注入?sql注入就是原本我只要我能操纵数据库,原本只是让你输入内容就走,而你却输入敕令,从而在我不知情下操纵数据库SQL注入1.什...
从零开始熟悉SQL注入 ,什么是SQL注入?sql注入就是原本我只要我能操纵数据库,原本只是让你输入内容就走,而你却输入敕令,从而在我不知情下操纵数据库

SQL注入

1.什么是SQL注入

  • 看一下下面的案例场景,这是一般状况下的上岸场景:

  • 而当我们运用 用户名‘:– 的时刻,暗码随意输入也能够上岸胜利↓

  • 这时刻对照两条sql就可以发明,实在用户经由过程在用户名写入的sql标记将内部sql提前结束,而且将后半句检索前提解释起来到达免暗码上岸结果。

sql注入就是原本我只要我能操纵数据库,原本只是让你输入内容就走,而你却输入敕令,从而在我不知情下操纵数据库

2.破绽的修复

  • 会发生上门面的状况是由于上面的sql是运用动态拼接的体式格局,所以sql传入的体式格局能够转变sql的语义。

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

  • 所以要运用preparedStatement的参数化sql,经由过程先肯定语义,再传入参数,就不会由于传入的参数转变sql的语义。(经由过程setInt,setString,setBoolean传入参数)

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注入的细致内容,更多请关注ki4网别的相干文章!

标签:SQL注入


欢迎 发表评论: