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. 万能密码是通过恶意输入让查询条件恒成立,实现免密登录
相关推荐
Leon-Ning Liu1 小时前
【真实经验分享】 ORA-600 [qesmaGetTblSeg1]
数据库·oracle
与数据交流的路上1 小时前
MySQL 优化 -- 相关
数据库·mysql
被子你放开我1 小时前
CRMEB PHP多商户升级4.0太麻烦了
开发语言·php
Rooting++1 小时前
为什么mysql的表字段的collation会自动变
数据库·mysql
Wch1G0z8A1 小时前
Google 开源了啥,让 AI Agent 碰数据库不再是定时炸弹
数据库·人工智能·开源
山河已无恙1 小时前
BPF-eBPF 开发路线二:libbpf、CO-RE 与 libbpf-bootstrap认知
javascript·bootstrap·php
tedcloud1231 小时前
cc-switch评测:多AI Coding Agent管理工具详解
数据库·人工智能·sql·学习·自动化
土狗TuGou2 小时前
SQL内功笔记 · 第8篇:事务的四大特性与隔离级别
数据库·笔记·后端·sql·mysql·oracle
Nturmoils3 小时前
一台 2C2G 服务器上的 KingbaseES 安装记录
数据库
SelectDB4 小时前
从 Machine-Readable 到 Agent-Ready:面向智能体的数据库接口演进
大数据·数据库·agent