SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因。安全问题不容忽视,平常的开发中应关注安全问题。下面简单记录PHP中的SQL攻击问题。

什么是SQL注入攻击

SQL注入(SQL Injection)是利用某些数据库的外部接口将用户数据插入到实际的数据库操作语言(SQL)当中,从而达到入侵数据库甚至是操作系统的目的。SQL注入攻击产生的原因是由于程序对用户输入的数据没有严格过滤,导致非法数据库查询语句的执行。

PHP案例演示SQL注入攻击

正常演示

下面将使用PHP进行简单的SQL注入攻击演示,因此没有多大的代码严谨度,只为演示SQL注入。

// test.php<?php

$conn = mysqli_connect('localhost','root','123456','demo');

if (!$conn) {

exit('数据库连接失败 '. mysqli_connect_error());

}

$name = $_GET['name'];

$password = $_GET['password'];

# 重点在于sql语句

$sql = "select * from user where name='$name' and password='$password'";

$result = mysqli_query($conn, $sql);

$userinfo = mysqli_fetch_array($result);

if (empty($userinfo)) {

echo '登录失败';

} else {

echo '登录成功';

}

echo "

SQL语句: $sql

";

第一:进行一次正确和错误的用户名与密码进行登录测试。# 表单中分别输入正确与错误的用户名与密码

# 可以看到用户名与密码正确时正常登录

登录成功

SQL语句: select * from user where name='lisi' and password='123456'

# 可以看到结果,登录失败了

登录失败

SQL语句: select * from user where name='lisi1' and password='1234561'注意:需要在地址栏输入访问

SQL注入攻击演示

重头戏来了,SQL注入攻击。

注入一:用户名表单中填入lisi' or '1=1,密码可填可不填写

注入二:用户名表单中填入lii'#,密码可填可不填登录成功

SQL语句: select * from user where name='lisi' or '1=1' and password=''

登录成功

SQL语句: select * from user where name='lisi' #' and password=''

很明显的可以看到,竟然登录成功了,我的天,登录没有密码竟然登录成功了!有些慌呀,有木有。

既然有攻击,那就有防范,下面就利用PHP内置函数对SQL注入进行防范。

预防SQL注入攻击

针对字符串注入攻击,可以在SQL语句中限制特殊符号:单引号,双引号,注释等,已知非法符号有:'、"、;、=、(、)、/*、*/、%、+、>、

方式一:使用正则表达式$res = "/^[a-zA-Z0-9]{6}$/";

if (empty($name) || empty($password) || !preg_match($res, $name)) {

die('非法登录');

}

方式二:使用PHP内置函数过滤和转义字符串$name = $_POST['name'];

$name=addslashes($name);

$name=str_replace("%","\%",$name);

$name=str_replace("_","\_",$name);

结果登录失败

SQL语句: select * from user where name='lisi\' or \'1=1\'' and password=''

我是小白,期待和优秀的你一起同行!

小白

2020年11月26日

转载:感谢您对自如初博客网站的认可,所有文章均属原创文章,技术类文章转载请注明出处,“自如初博客”;文学类文章请带文本链接地址,否则视为侵权!

很赞哦!(6)

mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击相关推荐

  1. sql md5函数_【学习笔记】常见漏洞:SQL注入的利用与防御

    第   21 课   SQL注入的利用与防御 课程入口(付费) 个人背景 李,本科,电子信息工程专业,毕业一年半,有JavaScript的,PHP,Python的语言基础,目前自学网络安全中. SQL ...

  2. [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. mysql datetime 默认值_老大让我整理下公司内部MySQL使用规范,分享给大家

    作者:白程序员的自习室 链接:https://www.studytime.xin/article/mysql-internal-specifications.html 最近涉及数据库相关操作较多,公司 ...

  4. mysql数据库程序开机_数据库的启动流程和关闭介绍/mysql初始化配置文件

    一 启动 数据库启动的最终结果就是实列的启动,就是守护进程mysqld启动,还有线程,预分配的内存结构 我们说musqld不是自助启动的,他是mysqld_safe这个脚本拉起来的 mysql.ser ...

  5. linux按照mysql为何如此简单_手把手教你在Linux下安装MySQL

    在Linux操作系统下,安装MYSQL有两种方式:一种tar安装方式,另外一种是rpm安装方式.这两种安装方式有什么区别呢?尽管我们在Linux下常用tar来压缩/解压缩文件,但MYSQL的tar格式 ...

  6. Ubuntu MySQL 亚马逊_亚马逊EC2 ubuntu下安装mysql远程无法连接问题o

    无法远程的原因有很多,我今天遇到的问题是通过navicat无法远程连接我在EC2上创建的实例. 1.通过命令" netstat -an|grep 3306 "检查一下3306端口对 ...

  7. mysql访问类型最好的_【干货满满】最全的MySQL性能指南(一):选择最佳的数据类型...

    对于 MySQL 数据库来说,好的逻辑表和物理表的规划至关重要,我们需要根据查询语句来针对性地设计 Schema ,没有万能好用的 Schema.一个 denormalized 的 schema 可以 ...

  8. centos mysql导出数据库命令_在centos(linux)下用命令导出mysql数据库数据

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. mysql 绕过权限检查_跳过权限检查,强制修改mysql密码

    windows: 1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如E:\Program Files\MySQL\M ...

最新文章

  1. 对于webservice响应,text / xml与application / xml之间有什么区别
  2. css技巧之如何实现ul li边框重合
  3. kbmmw 5.06.00 beta 发布
  4. SHELL中的IF判断 ​
  5. 返回json格式 不忽略null字段
  6. js两个日期对比大小
  7. windows环境下安装npm、cnpm、bower
  8. python多任务之——线程简述
  9. 等差、等比数列的求和公式
  10. android 设置锁屏壁纸
  11. 预祝大家平安夜圣诞节快乐
  12. [目标检测]论文翻译代码理解-SCRDet: Towards More Robust Detection for Small, Cluttered and Rotated Objects
  13. Unicode编码 ASCII码 utf-8编码 中英文字符所占字节
  14. unicode 生僻字_[微软拼音小技巧] 如何用Unicode输入生僻字
  15. ios - 7之状态栏黑底白字
  16. 机械革命z3pro笔记本U盘重装win10系统教学
  17. Win10 Anaconda3安装
  18. Unity2020Video player发布后无法播放视频问题
  19. 2021-2027全球与中国便携式超高清摄像头市场现状及未来发展趋势
  20. springboot基于javaweb校园防疫管理系统毕业设计源码021043

热门文章

  1. (三)渲染优化 (与浏览器为友,共进退)
  2. matlab神经网络工具箱创建神经网络,matlab神经网络工具箱创建神经网络
  3. vscode或cmd:无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
  4. html5添加渐变边框效果,《CSS3揭秘》上(边框,投影,渐变,条纹效果,蚂蚁行军)...
  5. 《JavaScript面向对象编程指南》—第128页错误指正
  6. 找回消失的ubuntu启动选项
  7. SpringBoot系列: 使用 flyway 管理数据库版本
  8. Dubbo 新编程模型之外部化配置
  9. Linux基础命令介绍七:网络传输与安全
  10. MarshalByRefObject浅析