PDO:php5

假如以下是一个简单的登录处理:

使用PDO连接mysql首先:

新建数据库

new PDO("mysql:host=localhost;dbname=test","root","root");

host:服务器
dbname:数据库名
后面两个分别是帐号和密码
默认不是长连接

如果想使用长连接需要在后面加入参数:

new PDO("mysql:host=host;dbname=name","user","pw","array(PDO::ATTR_PERSISTENT => true) "); 

看如下简单示例,在这里是单独说明,所以我没有加其他的东西:

<?php//接收前端传过来的变量$name=$_POST['username'];$pwd=$_POST['password'];//这里新建PDO连接,在这里我是本地测试的所以host我使用了localhost 数据库名为test,帐号为root密码也是root$stmt = new PDO("mysql:host=localhost;dbname=test","root","root");//使用prepare进行预处理,其中:name和:pwd是我们等下要传入的变量值,这些都是占位符$stmt = $stmt->prepare('SELECT * FROM user1 WHERE user1 = :name and pw1 = :pwd');//以上的准备都做好了之后,我们使用execute()方法负责执行准备好的查询//该方法需要有每次迭代执行中替换的输入参数,在这里就是:name和:pwd 作为数组将值传递给方法//从而值替换掉其中占位符//当然也可以使用bindParam,但是我还是喜欢这种简单的方式,毕竟人懒$stmt->execute(array('name' => $name,'pwd'=>$pwd));while ($row = $stmt->fetch()) {print_r($row);}

注释已经说明了要说的内容,最后面使用while输出查询到的值,这样就可以防止sql注入,如果不行,那么请自行测试,输入如:’ or 1=1#
我们看我们的’ or 1=1#,如果我们的name输入的是’ or 1=1#,注意 ’ or 1=1# 前面有一个单引号,那么如果我们的sql语句本是如下:

SELECT * FROM user1 WHERE user1='123' AND pw1='234'

把user1的值改为了 ’ or 1=1# 后。
变成了

SELECT * FROM user1 WHERE user1='' OR 1=1# and pw1='234'

其中由于sql中#代表:到此结束,那么说明后面的:and pw1=’234’都将无效,那么我们的sql语句就等于变成了如下语句:

SELECT * FROM user1 WHERE user1='' OR 1=1

由于1=1是肯定成立的,那么此句sql语句中的where条件将会永远正确,此时,语句变成或者说就等于了如下语句:

SELECT * FROM user1 WHERE TRUE

或者说:

SELECT * FROM user1

那么就会登录成功,绕过了此次登录。

php 使用PDO,防止sql注入 简单说明相关推荐

  1. php使用mysql预处理语句防止sql注入 简单讲解及代码实现

    目录 前言 sql注入简单介绍 一个例子 使用预处理语句 简介 预处理语句的查询 预处理语句获取查询结果 总结 前言 最近在做一个小项目的后台,牵扯到登录等等需要操作数据库的地方,为了安全起见,特地来 ...

  2. mysqli与pdo防sql注入源码

    1.mysqli防注入 <?php//定义配置文件$config = [//地址"host" => "127.0.0.1",//数据库名称" ...

  3. 每日分享-sql注入简单检测小工具(仅供参考学习)

    python版本:3.9.6 代码如下: #!/usr/bin/python3 # -*- coding:UTF-8 -*- import requests url = 'http://localho ...

  4. 从PDO下的SQL注入思路到获得GIT 3000star项目0day

    0x01 PDO简介 PDO全名PHP Data Object PDO扩展为PHP访问数据库定义了一个轻量级的一致接口.PDO提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以使用相同的函 ...

  5. TOP16榜首之SQL注入<宝藏文--- 工具实战演习 > -- -- 小黑渗透工程栈( 基础篇3 )

    之前两篇文章对sql注入做了简单详细的说明,这里会先做一下实战演习,然后会简单结合工具burp suite 和 sqlmap演示,以及对工具的使用说明. 此靶场为DVWA,下面链接是关于DVWA安装教 ...

  6. 网络信息安全实验 — 网络攻击技术实验(Kali系统,John、lc7、arpspoof、ettercap、SQL注入...)

    网络安全实验3 前言 Kali 常用指令 工具教程 ettercap 基本使用 一.口令破解 John the ripper 破解 linux 密码 l0phtcrack7 破解 windows 密码 ...

  7. 常见的SQL注入类型

    一.SQL注入原理 SQL注入简单原理 * 二.常见的SQL注入类型 注:?为php语言中的输入符 (1).按注入点区分: 1.数字型注入 数字型注入主要存在于网站的url中有?id=处,如:http ...

  8. pymysql模块和SQL注入

    目录 1.sql复习和分表操作 2.pymysql模块 2.1 pymysql的使用步骤 2.1 pymysql 增删改 1.数据提交和数据回滚 3.sql注入 1. 什么是SQL注入 2.非安全方式 ...

  9. php pdo sql注入,「原创」PHP实战-PDO优化及 SQL注入

    PDO优化,SQL注入攻击 PDO SQL语句预处理 PDO SQL语句预处理的步骤 第1步:制作相同结构的SQL 将SQL语句不同的数据部分,用参数或问号来代替. 第2步:将相同结构的SQL语句预编 ...

最新文章

  1. nodejs原生模块简介
  2. CAN总线简明易懂教程(一)
  3. 获取python工程下面的所需的所有开源依赖包
  4. SQL中Case when 方法的使用
  5. oracle yyyy和yy,Oracle PL / SQL:SYSDATE与’DD-MMM-YY’的区别?
  6. pro*C/C++支持c++开发实例
  7. P1678 烦恼的高考志愿
  8. AIOps中异常检测简的单应用
  9. 【Java学习笔记之十一】Java中常用的8大排序算法详解总结
  10. lol最克制诺手的英雄_LOL“英雄恐惧症”,当你上单遇到诺手时,你会用什么英雄对线...
  11. 第六章 线性回归 学习笔记下
  12. Java数组去掉重复的方法集
  13. Eigen教程3----矩阵、向量以及标量的运算,转置、共轭以及伴随矩阵
  14. 【深度相机系列二】深度相机原理揭秘--飞行时间(TOF)
  15. 网络工程师工作经验分享
  16. python pip中的Fatal error in launcher错误及解决
  17. TensorFlow案例---概率学中的逆概率
  18. html字体图标设置
  19. 数据库原理及应用-李唯唯主编-实验3-4
  20. 1. 设计数据库结构

热门文章

  1. Kubernetes Liveness and Readiness Probes
  2. Newtonsoft 六个超简单又实用的特性,值得一试 【下篇】
  3. 从零搭建分布式文件系统MinIO比FastDFS要更合适
  4. 阿捷外传之Git代码统计:DotNetCore + PowerBI 实现Git仓库日志分析
  5. ABP vNext中使用开源日志面板 LogDashboard
  6. 基于Masstransit实现Eventbus的功能
  7. PYPL 7月榜单公布:Java份额出现下降趋势
  8. .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  9. WebAssembly和Blazor:解决了一个存在十年的老问题
  10. .NET Core 3.0之创建基于Consul的Configuration扩展组件