您的当前位置:首页 > 百科 > php常见漏洞 正文

php常见漏洞

时间:2026-10-17 04:33:31 来源:网络整理 编辑:百科

核心提示

php常见漏洞 PHP代码里最坑人的不是语法,是那些看起来没问题的写法。我见过太多项目上线半年才发现数据库被拖了,原因就是一行`$_GET['id']`直接拼进SQL。别笑,2023年还有团队这么干

php常见漏洞

PHP代码里最坑人的见漏不是语法,是见漏那些看起来没问题的写法。我见过太多项目上线半年才发现数据库被拖了,见漏原因就是见漏一行`$_GET['id']`直接拼进SQL。别笑,见漏2023年还有团队这么干。见漏

SQL注入——老掉牙但永远排第一

你写`SELECT * FROM users WHERE id = $id`,见漏攻击者传个`1 OR 1=1`,见漏整个表就裸奔了。见漏更阴的见漏是时间盲注,对方拿sleep函数逐字符猜你的见漏密码哈希,你日志里全是见漏延迟请求,但没人会注意。见漏修复其实简单:PDO预处理绑定参数,见漏三行代码的见漏事。可总有开发者图省事用字符串拼接,觉得“内部系统没人攻击”。

XSS——前端过滤是纸糊的墙

评论区存了``,你以为浏览器转义了就安全?存储型XSS能偷管理员session,配合CSRF能改服务器配置。我见过最骚的操作:有人把恶意脚本塞进Excel导出功能,管理员下载文件后Excel宏自动执行。后端输出时用`htmlspecialchars`还不够,得区分上下文。JavaScript里插入用户数据,就得用JSON编码而非HTML实体。

文件上传——绕过方式比你想的多

上传头像功能,只检查扩展名是.jpg就放行?攻击者传个`.php.jpg`,Apache老版本可能直接当PHP执行。改文件头加`GIF89a`伪装图片,内容塞PHP shell,照样能getshell。更隐蔽的是利用`.htaccess`重写规则,上传个文本文件让服务器把它当CGI跑。最靠谱的办法是白名单校验MIME类型、重命名文件、存OSS或独立存储服务,让上传目录彻底没执行权限。

反序列化——PHP最特色的漏洞

`unserialize`函数接收用户输入就是个定时炸弹。框架里定义了`__wakeup`或`__destruct`魔术方法,攻击者构造对象链就能触发任意代码执行。2018年ThinkPHP RCE就是这路子。排查起来特痛苦——漏洞代码可能藏在第三方库的某个回调里。我建议:永远不要反序列化不可信数据,用JSON替代对象序列化。

文件包含——LFI/RFI的骚操作

`include($_GET['page'])`配合`php://filter/convert.base64-encode/resource=config.php`,能把源码读出来。配合日志注入或临时文件竞争,能升级成RCE。PHP7.4之后`allow_url_include`默认关闭,但本地文件包含照样致命——读`.env`文件拿数据库密码,读`/proc/self/environ`可能拿到HTTP头里的恶意代码。

弱类型比较——PHP独有的坑

`"0e123" == "0e456"`返回true,因为都解析成科学计数法0。密码哈希碰上`==`比较,构造`"0e"`开头的MD5值就能绕过。这不算传统漏洞,但属于设计缺陷。更恶心的是`strcmp()`函数,传数组进去直接返回NULL,NULL和0松散比较又是true。别用`==`或`!=`,全换成`===`和`!==`,治标治本。

写PHP这些年,我总结出一条经验:所有用户输入都不可信,所有输出都要转义,所有文件路径都要白名单。这活儿看着枯燥,但能救命。你项目里要是还有字符串拼SQL的地方,趁早改,别等被拖库了再拍大腿。

上一篇:cnsn博客