PHP 与数据库交互 与 SQL注⼊漏洞

注意:

中华人民共和国网络安全法
任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、 窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、 干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的 程序、工具:明知他人从事危害网络安全的活动的,不得为其提供技术 支持、广告推广、支付结算等帮助。

一、PHP 与数据库交互(登录核心流程)

  1. 交互四步走
    • 建立连接:用mysqli_connect连接数据库,失败则终止程序
    • 接收输入:通过$_POST获取账号密码,比 GET 更安全
    • 执行 SQL:拼接查询语句SELECT * FROM users WHERE name='$name' AND password='$pwd'并执行
    • 处理结果:判断是否查到数据,返回登录成功 / 失败
  2. 完整实现提供了可直接运行的 PHP 登录页面代码,包含数据库配置、表单提交、SQL 执行与结果反馈全流程。

二、数据库基础(SQL 核心)

  1. 基础操作
    • 库表创建:CREATE DATABASE/TABLE建库与用户表(含 id、name、password 等字段)
    • 数据 CRUD:新增INSERT、查询SELECT、修改UPDATE、删除DELETE
    • 高级查询:UNION合并查询结果、ORDER BY排序
  2. SQL 分类DDL(定义)、DML(操纵)、DQL(查询)、DCL(控制)四大类。

三、SQL 注入漏洞(万能密码)

  1. 漏洞根源 直接将用户输入拼接进 SQL 语句,未过滤单引号、OR、# 等特殊字符,未做转义处理,导致 SQL 逻辑被篡改。
  2. 万能密码原理 输入' or '1'='1实现三步攻击:
    • 闭合原有 SQL 单引号
    • 添加恒成立条件1=1
    • 忽略后续语法错误
  3. 攻击效果 SQL 条件永久为真,数据库返回所有用户数据,绕过密码验证直接登录

四、核心总结

  1. PHP 与数据库交互固定四步,登录优先用 POST 方式
  2. SQL 注入的本质是无过滤的 SQL 直接拼接
  3. 万能密码是通过恶意输入让查询条件恒成立,实现免密登录
相关推荐
IronMurphy1 分钟前
Redis拷打第二讲
数据库·redis·缓存
棒棒的唐9 分钟前
配置 VSCode 的 PHP Intelephense 插件,去掉因php版本不同导至的红色波浪线误判
ide·vscode·php
星月昭铭14 分钟前
5步在Trae中配置SQLcl MCP,让AI直接操作Oracle数据库
数据库·oracle·ai编程
phltxy22 分钟前
Redis Set:原理、命令与实战场景详解
数据库·redis·缓存
他是龙55122 分钟前
SQLi-Labs 通关笔记(Less-38 ~ Less-53):堆叠注入与 ORDER BY 注入
数据库·笔记·less
今天也是元气满满的一天呢24 分钟前
20260512-SQL学习大览
数据库·sql·学习
北秋,29 分钟前
Web Security Academy 第二关:SQL 注入登录绕过
数据库·sql
思麟呀30 分钟前
MySQL基础CRUD语句
数据库·mysql
Mike117.31 分钟前
GBase 8a DBLink 查询的落地边界和排查细节
开发语言·php
funnycoffee12331 分钟前
cisco Firepower 4110 9300 FXOS set chassis hostname
java·服务器·数据库