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. 万能密码是通过恶意输入让查询条件恒成立,实现免密登录
相关推荐
dishugj13 分钟前
oracle日志切换三条命令区别
数据库
Patrick在香港27 分钟前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
悟道书生33 分钟前
(一)Navicate为什么转存结构和数据只转存表而不包含建库?
数据库·oracle
赤龙ERP1 小时前
ERP周报:连接器开闸、国产GPU进场与智能工厂253家
数据库·人工智能·大模型·rpa·erp·企业数字化·builderpattern
lusklusklusk1 小时前
SQL Server补丁版本号为什么“日期新反而版本低”?——GDR、CU、CU+GDR 版本号规则与升级路径详解
数据库
李纲明1 小时前
WordPress 媒体库上传图片失败:先核 PHP 体积与目录权限,再查安全插件与对象存储
php·上传·wordpress·媒体库·devdiy
海域云SeaArea_1 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php
key_3_feng2 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
TangGeeA2 小时前
数据库、SQL 与 DB AI
数据库·人工智能·sql
IvorySQL2 小时前
开源数据库进校园| 11 月 3 日,IvorySQL 校园行走进浙大宁波校区:从 PostgreSQL 扩展生态到 AI 实战
数据库·postgresql·开源