返回顶部
首页 > 资讯 > 数据库 >使用PDO防sql注入的原理分析
  • 246
分享到

使用PDO防sql注入的原理分析

2024-04-02 19:04:59 246人浏览 薄情痞子
摘要

前言 本文使用pdo的预处理方式可以避免sql注入。下面话不多说了,来一起看看详细的介绍吧 在php手册中'PDO--预处理语句与存储过程'下的说明: 很多更成熟的数据库都支持预处理语句的概念。什么是

前言

本文使用pdo的预处理方式可以避免sql注入。下面话不多说了,来一起看看详细的介绍吧

在php手册中'PDO--预处理语句与存储过程'下的说明:

  • 很多更成熟的数据库都支持预处理语句的概念。什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。预处理语句可以带来两大好处:
  • 查询仅需解析(或预处理)一次,但可以用相同或不同的参数执行多次。当查询准备好后,数据库将分析、编译和优化执行该查询的计划。对于复杂的查询,此过程要花费较长的时间,如果需要以不同参数多次重复相同的查询,那么该过程将大大降低应用程序的速度。通过使用预处理语句,可以避免重复分析/编译/优化周 期。简言之,预处理语句占用更少的资源,因而运行得更快。
  • 提供给预处理语句的参数不需要用引号括起来,驱动程序会自动处理。如果应用程序只使用预处理语句,可以确保不会发生SQL 注入。(然而,如果查询的其他部分是由未转义的输入来构建的,则仍存在 SQL 注入的风险)。
  • 预处理语句如此有用,以至于它们唯一的特性是在驱动程序不支持的时PDO 将模拟处理。这样可以确保不管数据库是否具有这样的功能,都可以确保应用程序可以用相同的数据访问模式。  

下边分别说明一下上述两点好处:

1.首先说说Mysql的存储过程,mysql5中引入了存储过程特性,存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接中读取。mysql存储过程的使用可以参看:https://www.jb51.net/article/7032.htm

对于PDO,原理和其相同,只是PDO支持EMULATE_PREPARES(模拟预处理)方式,是在本地由PDO驱动完成,同时也可以不使用本地的模拟预处理,交由mysql完成,下边会对这两种情况进行说明。

2.防止sql注入,我通过tcpdump和wireshark结合抓包来分析一下。

虚拟机上执行一段代码,对远端mysql发起请求:


<?PHP

$pdo = new PDO("mysql:host=10.121.95.81;dbname=thor_cms;charset=utf8", "root","qihoo@360@qihoo");

$st = $pdo->prepare("select * from share where id =? and uid = ?");

$id = 6;
$uid = 521;

$st->bindParam(1, $id);
$st->bindParam(2, $uid);

$st->execute();
$ret = $st->fetchAll();

print_r($ret);
您可能感兴趣的文档:

--结束END--

本文标题: 使用PDO防sql注入的原理分析

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

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

猜你喜欢
  • 使用PDO防sql注入的原理分析
    前言 本文使用pdo的预处理方式可以避免sql注入。下面话不多说了,来一起看看详细的介绍吧 在php手册中'PDO--预处理语句与存储过程'下的说明: 很多更成熟的数据库都支持预处理语句的概念。什么是...
    99+
    2024-04-02
  • Mybatis防止sql注入原理分析
    目录Mybatis防止sql注入原理底层实现原理Mybatis解决sql注入问题小结一下Mybatis防止sql注入原理 SQL 注入是一种代码注入技术,用于攻击数据驱动的应用,恶意...
    99+
    2024-04-02
  • Mybatis-Plus注入SQL原理分析
    目录前言案例测试原理解析前言 MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 那么 MyBat...
    99+
    2024-04-02
  • 报错型sql注入原理分析
    0x00:前言  关于sql注入,经久不衰,现在的网站一般对sql注入的防护也相对加强了,2016年的***测试报告中,出现最多的是xss(跨站脚本***)和明文传输等,但是对...
    99+
    2024-04-02
  • Mybatis防止sql注入原理是什么
    这篇文章主要讲解了“Mybatis防止sql注入原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis防止sql注入原理是什么”吧!Mybatis防止sql注入原理SQL 注...
    99+
    2023-06-22
  • Mybatis-Plus的应用场景描述及注入SQL原理分析
    目录一、背景1.1 传统Mybatis的弊端1.2 MyBatis-Plus的定位1.3 特性1.4 原理解析二、准备工作2.1 基础接口BaseMapper2.2 创建实体类对象2...
    99+
    2024-04-02
  • sql注入报错之注入原理实例解析
    目录前言0x010x020x03总结前言 我相信很多小伙伴在玩sql注入报错注入时都会有一个疑问,为什么这么写就会报错?曾经我去查询的时候,也没有找到满意的答案,时隔几个月终于找到搞清楚原理...
    99+
    2022-06-13
    sql注入 报错注入 SQL报错注入 sql注入报错
  • Java SQL注入的原理和用法
    本篇内容介绍了“Java SQL注入的原理和用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录一,SQL注入–1,需求–2,测试–3,总...
    99+
    2023-06-20
  • SQL注入的示例分析
    这篇文章主要为大家展示了“SQL注入的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL注入的示例分析”这篇文章吧。SQL注入攻击的总体思路 ...
    99+
    2024-04-02
  • Web网络安全分析SQL注入绕过技术原理
    目录SQL注入绕过技术大小写绕过注入双写绕过注入编码绕过注入内联注释绕过注入SQL注入修复建议过滤危险字符使用预编译语句SQL注入绕过技术 大小写绕过注入 使用关键字大小写的方式尝试...
    99+
    2024-04-02
  • Web网络安全漏洞分析SQL注入原理详解
    目录一、SQL注入的基础1.1 介绍SQL注入1.2 注入的原理1.3 与MySQL注入相关的知识MySQL查询语句limit的用法需要记住的几个函数注释符内联注释一、SQL注入的基...
    99+
    2024-04-02
  • SQL注入中sleep注入的原理是什么
    sleep()型的SQL注入是request发送后会产生一个timeout的delay,没有respond,相当于一种DDOS攻击,向数据库不停的发送request,不会很快释放连接,连接池会慢,导致数据库不响应,可以通过在mysql中禁止...
    99+
    2024-04-02
  • SQL注入的原理有哪些
    本篇文章给大家分享的是有关SQL注入的原理有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、什么是sql注入?1、什么是sql注入呢?&...
    99+
    2024-04-02
  • sql注入的原理是什么
    这篇文章主要介绍了sql注入的原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 首先了解SQL注入的原理:  SQL Injec...
    99+
    2024-04-02
  • springBoot自动注入原理的示例分析
    这篇文章给大家分享的是有关springBoot自动注入原理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。@SpringBootApplication注解解读为什么我们的启动类上标注一个@SpringBo...
    99+
    2023-06-29
  • sql注入之手工注入的示例分析
    这篇文章将为大家详细讲解有关sql注入之手工注入的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为了方便说明,我们还是用之前的数字型的注入点为例来进行说明。得到字...
    99+
    2024-04-02
  • PHP PDO 防注入攻击:保护你的应用程序
    简介 PHP PDO(PHP 数据对象)是用于与数据库进行交互的扩展。虽然 PDO 提供了方便和灵活的数据库访问,但它也可能容易受到注入攻击。注入攻击是通过将恶意代码注入到数据库查询中来利用应用程序的漏洞。这可能会导致未经授权的数据访问...
    99+
    2024-02-17
    PHP PDO 注入攻击 防范 绑定的参数
  • Mybatis的SQL注入实例分析
    本文小编为大家详细介绍“Mybatis的SQL注入实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis的SQL注入实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言MyBatis3提供了...
    99+
    2023-06-29
  • SQL注入语义分析库libinjection怎么使用
    本文小编为大家详细介绍“SQL注入语义分析库libinjection怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQL注入语义分析库libinjection怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-05
  • 使用MyBatis时怎么防止SQL注入
    要防止SQL注入攻击,可以采取以下几种方式: 使用预编译语句:在MyBatis中,使用#{}来代替直接拼接参数值,这样可以自动为...
    99+
    2024-05-08
    MyBatis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作