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. 万能密码是通过恶意输入让查询条件恒成立,实现免密登录
相关推荐
weixin_3823952311 分钟前
本地部署 ERP 选型记录:从 Excel 到轻量系统的这几年
数据库·人工智能·数据挖掘
2401_8914092638 分钟前
期货量化用得上的几类行情数据:逐笔、Level2、分钟线和五档tick
数据库
海绵宝宝转agent1 小时前
基于Redis ZSet+AOP+注解实现限流注解算法
数据库·redis·算法
imDwAaY2 小时前
Redis 也能做消息队列?从 Stream 的存储讲到消费确认
数据库·redis·缓存
@Mike@2 小时前
13-数据库学习笔记(查询执行处理模型)
数据库·笔记·学习
弈栈录2 小时前
MySQL 事务、索引与锁:后端开发必须掌握的数据库基础
数据库·后端
9624562 小时前
餐饮 SaaS 优惠券系统架构演进(三):优惠计算引擎——商品级计价、冲突策略与优惠分摊
java·数据库·spring boot
染指11102 小时前
135.Agent-多Agent框架-LangChain多智能体(SubAgents子代理)
数据库·人工智能·设计模式·langchain·agent·agents
小此方2 小时前
Linux网络(二十):TCP拥塞控制与延迟应答详解:从拥塞窗口到TCP性能优化,理解TCP与UDP的效率差异
linux·网络·php
Elastic 中国社区官方博客3 小时前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索