返回顶部
首页 > 资讯 > 数据库 >mysql语句的注入错误指的是什么
  • 719
分享到

mysql语句的注入错误指的是什么

2024-04-02 19:04:59 719人浏览 八月长安
摘要

小编给大家分享一下Mysql语句的注入错误指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql语句的注入式错误就是利用某些数据库的外部接口将用户数据插入到实际的sql语言当中,从

小编给大家分享一下Mysql语句的注入错误指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

mysql语句的注入式错误就是利用某些数据库的外部接口将用户数据插入到实际的sql语言当中,从而达到入侵数据库乃至操作系统的目的。攻击者利用它来读取、修改或者删除数据库内的数据,获得数据库中用户资料和密码等信息,更严重会获得管理员的权限。

sql注入式错误(SQL injection)

SQL Injection 就是利用某些数据库的外部接口将用户数据插入到实际的数据库操作语言(SQL)当中,从而达到入侵数据库乃至操作系统的目的。它的产生主要是由于程序对用户输入的数据没有进行严格的过滤,导致非法数据库查询语句的执行。
《深入浅出 MySQL》

危害
攻击者利用它来读取、修改或者删除数据库内的数据,获得数据库中用户资料和密码等信息,更严重的就是获得管理员的权限。

例子

 //注入式错误
    public static void test3(String name,String passward){
        Connection connection = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            // 加载JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获得JDBC 连接
            String url = "jdbc:mysql://localhost:3306/tulun";
            connection = DriverManager.getConnection(url,"root","123456");
            //创建一个查询语句
            st = connection.createStatement();
            //sql语句
            String sql = "select * from student where name = '"+ name+"' and passward = '"+passward+"'";
            rs = st.executeQuery(sql);

            if(rs.next()){
                System.out.println("登录成功。");
            }else{
                System.out.println("登录失败。");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
       
        test3("wjm3' or '1 = 1","151515");

    }

数据库信息
mysql语句的注入错误指的是什么
如上面的代码所示,用户名为wjm3’ or '1 = 1,密码为151515,从数据库中可以看出我们没有这样的用户,本来应该显示登录失败,但是结果却是登陆成功,因为or '1 = 1 已经不是用户名里面的内容了,它现在为SQL 语句里面的内容,不论如何,结果都为true,等于不用输密码都可以登录。这里就产生了安全问题。

解决方法

1. PrepareStatement

 //注入式错误
    public static void test3(String name,String passward){
        Connection connection = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        try {
            // 加载JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 获得JDBC 连接
            String url = "jdbc:mysql://localhost:3306/tulun";
            connection = DriverManager.getConnection(url,"root","123456");
            //创建一个查询语句
            String sql1 =  "select * from student where name = ? and passward = ?";
            st = connection.prepareStatement(sql1);
           st.setString(1,name);
           st.setString(2,passward);
            //sql语句
            //String sql = "select * from student where name = '"+ name+"' and passward = '"+passward+"'";
            rs = st.executeQuery();

            if(rs.next()){
                System.out.println("登录成功。");
            }else{
                System.out.println("登录失败。");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                connection.close();
                st.close();
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
     public static void main(String[] args) {
        test3("wjm3' or '1 = 1","151515");
    }

上面这个代码不管name 参数是什么,它都只是name 参数,不会作为sql语句的一部分来执行,一般来说推荐这个方法,比较安全。
2.自己定义函数进行校验

  • 整理数据使之变得有效
  • 拒绝已知的非法输入
  • 只接受已知的合法输入

所以如果想要获得最好的安全状态,目前最好的解决办法就是对用户提交或者可能改变的数据进行简单分类,分别应用正则表达式来对用户提供的输入数据进行严格的检测和验证。
其实只需要过滤非法的符号组合就可以阻止已知形式的攻击,并且如果发现更新的攻击符号组合,也可以将这些符号组合增添进来,继续防范新的攻击。特别是空格符号和其产生相同作用的分隔关键字的符号,例如“”,如果能成功过滤这种符号,那么有很多注入攻击将不能发生,并且同时也要过滤它们的十六进制表示“%XX”。

看完了这篇文章,相信你对mysql语句的注入错误指的是什么有了一定的了解,想了解更多相关知识,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: mysql语句的注入错误指的是什么

本文链接: https://lsjlt.com/news/52874.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql语句的注入错误指的是什么
    小编给大家分享一下mysql语句的注入错误指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql语句的注入式错误就是利用某些数据库的外部接口将用户数据插入到实际的SQL语言当中,从...
    99+
    2024-04-02
  • go语言eof错误指的是什么
    这篇文章主要介绍了go语言eof错误指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇go语言eof错误指的是什么文章都会有所收获,下面我们一起来看看吧。在go语言中,eof是指文件结尾错误,是Go语言中...
    99+
    2023-07-05
  • go语言依赖注入指的是什么
    本篇内容介绍了“go语言依赖注入指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在go语言中,依赖注入(DI)是一种解耦组件之间依赖...
    99+
    2023-07-05
  • c语言中link错误指的是什么
    在C语言中,link错误是指在编译过程中发生的连接错误。连接(linking)是将多个源文件和库文件合并为一个可执行文件的过程。 当...
    99+
    2023-10-23
    c语言
  • SQL注入指的是什么
    小编给大家分享一下SQL注入指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQL注入1.什么是SQL注入看一下下面的案...
    99+
    2024-04-02
  • mysql报错注入学习笔记 语句的执行
    学习到mysql 数据库 利用报错进行注入,整理了一下个人的学习笔记,仅限于个人的理解。数据库名--------注入语句   得到数据库名and(select 1 from(selec&...
    99+
    2024-04-02
  • 什么是MySQL的基础语句
    本篇文章给大家主要讲的是关于什么是MySQL的基础语句的内容,感兴趣的话就一起来看看这篇文章吧,相信看完什么是MySQL的基础语句对大家多少有点参考价值吧。查看当前MYSQL支持的存储引擎show engi...
    99+
    2024-04-02
  • mysql的索引语句是什么
    本篇文章为大家展示了mysql的索引语句是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。mysql的索引语句是什么1.添加主键索引  mysql...
    99+
    2024-04-02
  • mysql增加的语句是什么
    这篇文章主要讲解了“mysql增加的语句是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql增加的语句是什么”吧! 增...
    99+
    2024-04-02
  • php中的输入语句是什么
    php 中获取用户输入的函数是 input(),该函数可从命令行或 web 表单中获取输入,需要传递一个字符串参数作为要显示给用户的消息,且返回用户输入的字符串。 PHP 中的输入语句...
    99+
    2024-04-29
  • PHP+MySQL的手工注入语句大全
    这篇文章主要介绍“PHP+MySQL的手工注入语句大全”,在日常操作中,相信很多人在PHP+MySQL的手工注入语句大全问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP+MySQL的手工注入语句大全”的疑...
    99+
    2023-06-05
  • sql注入语句有三种分别是什么
    这篇文章主要介绍sql注入语句有三种分别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql注入语句有三种,分别是:1、数字型注入点,语句如“select * fro...
    99+
    2024-04-02
  • sql注入攻击指的是什么
    小编给大家分享一下sql注入攻击指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参...
    99+
    2024-04-02
  • sql注入指的是什么意思
    这篇文章主要介绍了sql注入指的是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。sql注入一般可以通过网页表单直接输入。sql注入是...
    99+
    2024-04-02
  • php依赖注入指的是什么
    本篇内容介绍了“php依赖注入指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在PHP中,依赖注入是指对类的依赖通过构造器完成自动注...
    99+
    2023-06-29
  • linux中500错误指的是什么
    这篇文章主要讲解了“linux中500错误指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux中500错误指的是什么”吧!在linux中,500错误指的是“500 Intern...
    99+
    2023-07-02
  • php中401错误指的是什么
    本文小编为大家详细介绍“php中401错误指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“php中401错误指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。PHP 401错误码是指服务器拒绝访问...
    99+
    2023-07-05
  • php.ini详细错误指的是什么
    这篇文章主要讲解了“php.ini详细错误指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php.ini详细错误指的是什么”吧!PHP ini详细错误是一种配置错误,通常会在服务器上...
    99+
    2023-07-06
  • 为什么要防sql语句注入
    sql注入是通过把sql命令插入到web表单提交或通过页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql指令以及获得攻击者想得知的数据信息,因此我们需要通过数据库安全防护技术实现有效防护,从而避免sql注入导致数据泄露的情况。...
    99+
    2024-04-02
  • 为什么我的 switch 语句会出现语法错误?
    php小编新一在编写代码时,经常会遇到各种问题和困惑。其中一个常见的问题是在使用 switch 语句时出现语法错误。这可能会使代码无法正常运行,给开发带来困扰。那么,为什么会出现这种错...
    99+
    2024-02-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作