zoukankan      html  css  js  c++  java
  • sql注入详解

    什么是SQL注入?

    SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

    常见的sql注入有哪些?

     1. or 1=1  造成无密码登陆

      2.order by 1 或者2,3  order by 函数是对MySQL中查询结果按照指定字段名进行排序,除了指定字 段名还可以指定字段的栏位进行排序,第一个查询字段为1,第二个为2,依次 类推。我们可以通过二分法来猜解列数

     3. UNION 

            ①获取数据库名和表明

    使用这条命令我们可以爆出服务端MYSQL当前的用户名,当前的数据库名,可以利用数据库名进一步获取表名。(因为UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。所以Union前面的查询我们用1=2给取消掉)

    SELECT * FROM `employees_copy` WHERE emp_no!=12 AND 1=2 UNION SELECT USER(),DATABASE()

          ②然后我们可以继续获取表名

    SELECT * FROM `employees_copy` WHERE emp_no!=12 AND 1=2 UNION SELECT 1,GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE table_schema=DATABASE()
    

      

          ③然后继续获取列名

          

    SELECT * FROM `employees_copy` WHERE emp_no!=12 AND  1=2 UNION SELECT GROUP_CONCAT(column_name),2 FROM information_schema.columns WHERE table_name='employees_copy'
    

      

           

          ④查询所有数据

       

    SELECT * FROM `employees_copy`  WHERE emp_no!=12  AND  1=2
    
    UNION SELECT  GROUP_CONCAT(emp_no,0x20,first_name),2 FROM employees_copy
    

      

      

    如何防止SQL注入攻击?

    1.不要使用动态SQL 使用参数化sql语句  使用到了  在ADO.NET对象模型中执行一个参数化查询,需要向SqlCommand对象的Parameters

    string sqlStr="select * from [Users] where UserName=@UserName and Password=@Password"
    

      然后创建命令对象的代码时,修改为:

    SqlCommand cmd = new SqlCommand(sqlStr,conn);
    cmd.Parameters.AddWithValue("@UserName",txtUserName.Text.Trim());
    cmd.Parameters.AddWithValue("@Password",txtUserPassword.Text.Trim());
    

      

    2.制数据库权限和特权

    3.避免直接向用户显示数据库错误

  • 相关阅读:
    LeetCode 538----Convert BST to Greater Tree
    LeetCode 543---- Diameter of Binary Tree
    springboot请求体中的流只能读取一次的问题
    bind9+dlz+mysql连接断开问题
    关于Java的Object.clone()方法与对象的深浅拷贝
    HashSet怎样保证元素不重复
    percona-toolkit主从同步整理(MySQL)
    MySQL主从配置
    关于自动化部署平台的尝试
    struts2使用注解的时候遇到的问题
  • 原文地址:https://www.cnblogs.com/xuedognqing/p/12986486.html
Copyright © 2011-2022 走看看