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. 万能密码是通过恶意输入让查询条件恒成立,实现免密登录
相关推荐
复园电子37 分钟前
企业级PDF批量盖章方案选型指南
数据库·pdf
Lhappy嘻嘻6 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
AI-好学者7 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
2601_963771379 小时前
How to Scale Your WordPress Store Traffic in 2026
前端·php·plugin
其实防守也摸鱼9 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚9 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔7259 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋9 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_10 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾10 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#