iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL中 Injection的作用是什么
  • 599
分享到

SQL中 Injection的作用是什么

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

本篇文章给大家分享的是有关sql中 Injection的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SQL Injection,S

本篇文章给大家分享的是有关sql中 Injection的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

SQL Injection,SQL 注入,其实就是利用代码漏洞改变 SQL 的语意,从而形成恶意 SQL 语句

$username = $_POST['username'];
$passWord = $_POST['password'];

$query = "select * from users where username = '{$username}' and password = '{$password}'";

// 判断是否登录成功
if (DB::select($query)) {
    return true;
}

return false;

咋一看这段伪代码没啥问题,就是判断账号密码是否正确,正确就返回 true,允许登录。但是如果传入的 username 为 123' or 1=1;#\,那么 SQL 语句就变为了

select * from users where username = '123' or 1=1;
# and password = '{$password}'";

这条恶意的 SQL 语句无论何时都会返回 true,因为 1=1

通过 ORM 注入

我们前面讲过 SQL Injection 就是利用代码漏洞改变 SQL 的语意,意味着 ORM 也是一个潜在的注入点。以 tp3.2 为例,有下面这段代码

$result = D('User')->where([
    'username' => $_POST['username'],
    'password' => $_POST['password'],
]);

if ($result) {
    echo '登录成功';
} else {
    echo '登录失败';
}

这段代码咋看起来没啥问题,但是如果 username 传入的是 username[0]=neq&username[1]=1111,这样就是的查询语句变为

$result = D('User')->where([
    'username' => ['neq', 111],
    'password' => $_POST['password'],
]);

那么 $result 的结果将永远为 true

防范方法

  • 对传入的参数进行数据类型判断和数据类型转换

  • 对引号进行转义,PHP 可以使用 addslashes,Mysql_real_escape_string 等函数

  • 预处理语句,最有效防范 SQL Injection

  • 代码审计

预处理语句是如何防止 SQL Injection 的

预处理语句是由数据库实现的,比如 mysql 就有实现预处理语句。首先讲下预处理的基本流程

  • MySQL 接收到 预处理 SQL Template,立刻着手进行解析(词法和语法)

  • 客户端发送数据,去替换 SQL Template 中的占位符(?)

  • MySQL 执行语句,返回结果

  • 删除预处理语句(可选)

那么预处理语句是如何防范 SQL 注入的呢?首先所谓的 SQL Injection 就是强行去改变 SQL 语意。而在步骤一中已经处理完成语句,将 SQL 的语意固定下来,步骤二的替换占位符并不会改变 SQL 语意。下面是 php PDO 的例子

$stmt = $pdo->prepare("select * from users where username = '?' and password = '?'");

$stmt->execute("123' or 1=1;#", 'test');

以上就是SQL中 Injection的作用是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: SQL中 Injection的作用是什么

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL中 Injection的作用是什么
    本篇文章给大家分享的是有关SQL中 Injection的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SQL Injection,S...
    99+
    2022-10-18
  • sql中IDENTITY_INSERT的作用是什么
    IDENTITY_INSERT是SQL Server中的一个选项,用于允许向具有标识列的表中插入特定值。标识列是指自动递增的列,它的...
    99+
    2023-08-31
    sql
  • SQL Server中Collation的作用是什么
    SQL Server中Collation的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  Collation的组成  在讲完字...
    99+
    2022-10-18
  • SQL Server中FileStream的作用是什么
    SQL Server中FileStream的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、FileStream配...
    99+
    2022-10-18
  • SQL join的作用是什么
    SQL的JOIN操作用于将两个或多个表中的行连接在一起,形成一个新的结果集。JOIN操作可以根据两个或多个表之间的列的值进行连接,从...
    99+
    2023-10-07
    sql join
  • SQL中distinct关键字的作用是什么
    在SQL中,DISTINCT关键字用于返回唯一不重复的记录。当在SELECT语句中使用DISTINCT关键字时,查询结果将只返回不重...
    99+
    2023-09-14
    SQL
  • SQL中主键约束的作用是什么
    主键约束是一种用于定义数据表中唯一标识每条记录的约束,其作用如下:1. 唯一标识记录:主键约束确保每条记录都有一个唯一的标识,通过主...
    99+
    2023-09-26
    SQL
  • SQL Server中JSON 函数的作用是什么
    这期内容当中小编将会给大家带来有关SQL Server中JSON 函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。2.1 JSON 函数使用本节中页面中描述...
    99+
    2022-10-18
  • sql server中意向锁的作用是什么
    本篇文章给大家分享的是有关sql server中意向锁的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  sql server中意向...
    99+
    2022-10-18
  • SQL Server 中系统表的作用是什么
    本篇文章给大家分享的是有关SQL Server 中系统表的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。sysaltfiles 主 ...
    99+
    2022-10-18
  • SQL SELECT语句的作用是什么
    SQL SELECT语句用于从数据库中检索数据。它允许用户指定要检索的表、列以及任何其他查询条件,并且可以使用多个关键字和函数来对数...
    99+
    2023-10-10
    SQL
  • SQL命令DECLARE的作用是什么
    SQL命令DECLARE的作用是声明一个游标变量或变量。游标变量用于存储查询结果集,并且可以通过游标的操作来访问和处理结果集中的数据...
    99+
    2023-09-29
    SQL
  • SQL DELETE语句的作用是什么
    SQL DELETE语句用于删除数据库中的数据。它允许用户从一个或多个表中删除符合特定条件的记录。 DELETE语句会删除满足条件的...
    99+
    2023-09-05
    SQL
  • SQL触发器的作用是什么
    本篇文章为大家展示了SQL触发器的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。触发器的作用  1、安全性,可以基于数据库的值使用户具有操作数据库的某种权...
    99+
    2022-10-18
  • SQL UNIQUE约束的作用是什么
    SQL UNIQUE约束用于确保表中的某个列(或一组列)的值是唯一的。具体来说,UNIQUE约束可以用于以下几种情况:1. 单列唯一...
    99+
    2023-09-05
    SQL
  • Sql Server中聚集索引的作用是什么
    这篇文章将为大家详细讲解有关Sql Server中聚集索引的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一:现象1:无索引的情况  还是老规矩,...
    99+
    2022-10-18
  • SQL-Hive中常用的表格操作是什么
    本篇内容主要讲解“SQL-Hive中常用的表格操作是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL-Hive中常用的表格操作是什么”吧!01-最基础的...
    99+
    2022-10-18
  • SQL SELECT INTO语句的作用是什么
    SQL SELECT INTO语句的作用是将一个表的数据复制到一个新的表中。具体而言,SELECT INTO语句会根据指定的查询条件...
    99+
    2023-10-12
    SQL
  • SQL LIKE操作符的用法是什么
    SQL LIKE操作符用于在WHERE子句中进行模式匹配。它可以与通配符配合使用来查找指定模式的数据。常见的通配符有:- %...
    99+
    2023-10-10
    SQL
  • SQL ALTER TABLE语句的作用是什么
    SQL ALTER TABLE语句用于修改数据库中现有表的结构。它可以执行以下操作:1. 添加列:可以通过ALTER TABLE语句...
    99+
    2023-10-10
    SQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作