PHP安全漏洞修复指南:防SQL注入与XSS

发布时间:2026/10/21 2:26:00

PHP安全漏洞修复指南:防SQL注入与XSS 一、为什么 PHP 项目总被盯上做 PHP 开发这些年我见过太多项目上线后被黑的情况。说句实话大部分漏洞并不是什么高深的技术翻来覆去就是 SQL 注入和 XSS 这两类。很多新手写代码的时候图省事直接把用户输入拼进 SQL 语句或者原样输出到页面上结果就给黑客留了后门。这篇文章不聊那些虚的理论直接讲怎么修、怎么防。我会结合实际的代码片段把常见的坑一个个填平。二、SQL 注入别再把变量拼进查询里先看一段典型的反面教材。很多老代码里都有这种写法?php // 危险写法直接拼接用户输入 $id $_GET[id]; $sql SELECT * FROM users WHERE id . $id; $result mysqli_query($conn, $sql); ?这段代码的问题在于如果用户在地址栏输入?id1 OR 11那查询就变成了SELECT * FROM users WHERE id 1 OR 11整张表的数据全被捞走了。更狠一点的还能用UNION SELECT拖出其他表的数据。正确的做法是使用预处理语句也就是参数化查询。拿 PDO 举例?php // 推荐写法PDO 预处理语句 $pdo new PDO(mysql:hostlocalhost;dbnametest, root, password); $stmt $pdo-prepare(SELECT * FROM users WHERE id :id); $stmt-execute([:id $_GET[id]]); $user $stmt-fetch(); ?这样写参数和 SQL 语句是分开传输的数据库会先把语句编译好再把参数当纯数据处理无论用户输入什么都只是一串字符不会变成可执行的 SQL 片段。如果你还在用老旧的mysqli同样有对应的预处理写法?php // mysqli 预处理写法 $stmt mysqli_prepare($conn, SELECT * FROM users WHERE id ?); mysqli_stmt_bind_param($stmt, i, $_GET[id]); mysqli_stmt_execute($stmt); $result mysqli_stmt_get_result($stmt); ?这里有个小细节bind_param的第二个参数i表示整数类型如果字段是字符串就写s。养成绑定类型的习惯能少踩不少坑。三、XSS 跨站脚本输出之前先过滤XSS 的攻击思路和 SQL 注入正好相反它是把恶意脚本塞进页面里。比如用户在留言板提交了这么一段内容scriptalert(你被黑了)/script如果后端直接把这个内容原样输出到 HTML 里那所有访问这个页面的用户都会弹窗更严重的还能窃取 Cookie、伪造登录状态。修复的核心思路就一句话输出到 HTML 之前把特殊字符转义掉。PHP 自带的htmlspecialchars函数就是干这个的?php // 安全输出转义 HTML 特殊字符 echo htmlspecialchars($user_input, ENT_QUOTES, UTF-8); ?这个函数会把、、、引号等字符转成对应的 HTML 实体浏览器拿到之后只会显示成普通文本不会当成标签去解析。另外要提醒一点htmlspecialchars的第二个参数建议用ENT_QUOTES这样单引号和双引号都会被转义。有些老代码只写了第一个参数结果单引号没被处理照样能绕过。如果项目里用了模板引擎比如 Twig 或者 Blade它们默认就开启了自动转义这能省不少事。但要注意如果用了|raw之类的过滤器强制输出原始内容那安全责任就又回到自己身上了。四、顺手再补几个小习惯除了上面两个核心修复还有几个日常开发里容易忽略的点一起列出来数据库账号权限给应用用的数据库账号只授予它需要的权限别一上来就给root或者ALL PRIVILEGES。关闭错误回显生产环境把display_errors关掉避免把 SQL 语句和文件路径直接暴露给用户。设置字符集连接数据库时显式指定utf8mb4能避免一部分编码相关的注入绕过。内容安全策略在响应头里加上Content-Security-Policy限制脚本来源即使有 XSS 漏洞也能降低危害。安全这东西从来不是一次修完就一劳永逸的。代码上线之后建议定期用扫描工具过一遍或者干脆请懂行的朋友帮忙做一次代码审计。毕竟漏洞往往藏在那些你觉得“应该没问题”的地方。
延伸阅读

更多相关文章

2026/10/21 2:25:59

C++字符串循环优化:从40ms到2ms的实践复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:25:59

STM32寄存器开发白话手册:从时钟树、GPIO到中断与PWM实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 6:26:28

AI Native工作台:智能体编排与知识图谱驱动的协作操作系统

1. 项目概述:这不是又一个“AI工具集合”,而是一套可生长的工作操作系统“Agentory:个人与团队的AI Native工作台”——这个标题里,“AI Native”四个字是真正的分水岭。它不是把ChatGPT网页嵌进一个新UI里,也不是给现…

2026/10/21 6:26:28

Real-ESRGAN超分工具详解:从环境搭建到老照片批量修复

很多玩 AI 修复、老照片翻新、视频放大的朋友,应该都见过rea这个缩写在技术帖里出现。这不是某个神秘框架的代号,绝大多数情况下,它指代的是超分辨率开源项目 Real-ESRGAN。我最初也以为是哪个网名缩写,直到自己动手把它跑起来&am…

2026/10/21 6:26:28

Agent生产级调优三大支柱:吞吐瓶颈、Token经济与故障熔断

1. 这不是“调优”,是Agent从Demo走向真实业务的生死线很多人把Agent调优理解成给模型加个温度参数、换个小一点的模型、或者把prompt写得更“优雅”一点。我见过太多团队在内部演示会上掌声雷动,一上线就崩:响应延迟从800ms飙到12秒&#xf…

2026/10/21 6:26:28

WebDAV Android客户端开发:Kotlin协程实现协议级兼容

简介:WebDAVClient是一款基于Kotlin开发的轻量级Android端WebDAV协议客户端,面向Android开发者及需要在移动设备上管理远程WebDAV服务器文件的技术人员,解决跨平台文件同步、远程编辑与协作访问等实际需求。资源包共149个文件,涵盖…

2026/10/21 6:26:28

Agentory:面向AI Native时代的工作操作系统

1. 项目概述:这不是又一个“AI工具集合”,而是一套可生长的工作操作系统“Agentory:个人与团队的AI Native工作台”——光看这个名字,很多人第一反应是:“哦,又一个把ChatGPT、Claude、Perplexity打包进网页…

2026/10/21 6:21:24

运维测试开发太卷?网络安全岗位缺口大,转型路径全解析

先摆个现象:我身边教研圈子里,做运维的朋友天天焦虑容器编排、告警风暴、容量规划,做测试开发的朋友天天被接口自动化、回归覆盖率、CI/CD卡得死死的。但真往网络安全方向看,你会发现另一番景象——安全岗位常年挂着,翻…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/21 0:00:35

交通流仿真实战:IDM跟驰与MOBIL换道模型参数调优与避坑指南

简介:这份资源是面向交通工程学习者与Python开发者的微观交通流仿真项目,核心实现智能驾驶模型(IDM)下的车辆跟驰与换道行为,可用于理解速度、密度与流量之间的动态关系,适合具备Python基础、希望深入交通模…

2026/10/21 0:00:35

揭穿智能体表面顺从:用追踪代码重建任务执行确定性

1. 表面顺从不是智能体的“礼貌”,而是任务执行链路上的隐性断点最近在调试一个跨平台长周期任务调度系统时,我反复遇到一种令人困惑的现象:智能体在用户指令发出后,几乎秒级响应“已收到”“正在处理”“请稍候”,UI上…

2026/10/21 0:00:35

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑