ThinkPHP如何防止SQL注入与权限漏洞_输入过滤与参数绑定
作者:暮色微凉
时间:2026-07-06
浏览:3
PhpStorm macOS版
PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。
¥890
Mac
2026-10-13
ThinkPHP中数组形式的`where()`因自动参数绑定可防SQL注入,而字符串拼接危险;`input()`默认不过滤,需显式指定`/s`或`/d`规则;`saveAll()`和`destroy()`需前置权限校验防止越权;`deploy`配置不影响绑定,但从库可能不支持预处理导致静默失效。
本文目录
ThinkPHP 的 `where()` 用数组更安全,因自动参数绑定防SQL注入;`input()` 不自动过滤,需显式指定规则如`/s`或`/d`;`sa veAll()`/`destroy()`需前置权限校验;`deploy`配置不影响绑定,但从库可能不支持预处理导致静默失效。

ThinkPHP 的 where() 用数组还是字符串?
input() 函数默认不过滤,必须显式指定过滤规则
很多人有个误解,觉得用了 `input('id')` 就等于安全了。其实 `input()` 只负责取值,不会自动转义或过滤。它和原生的 `$_GET['id']` 在数据来源上没本质区别,只是多了层键名检查。 - ❌ **错误用法**:`input('username')` —— 用户传 `username=%3Cscript%3Ealert(1)%3C/script%3E` 照样进库 - ✅ **安全做法**:`input('username/s')`(`/s` 表示 `htmlspecialchars` 过滤)、`input('id/d')`(`/d` 强制转整型) - ⚠️ **坑点**:`/s` 不防 SQL 注入,只防 XSS;`/d` 遇到非数字会返回 0,可能掩盖业务逻辑错误——比如查不到用户却返回 ID=0 的记录,排查起来很头疼批量更新/删除时,为什么 sa veAll() 和 destroy() 仍需校验权限?
数据库配置里 deploy 和 read_master 开关影响参数绑定吗?
作者最新文章
漫蛙漫画最新版本下载
2026-10-13 13:20
漫蛙漫画官方免费漫画入口
2026-10-13 13:19
漫蛙漫画网页版入口
2026-10-13 13:19
最新漫蛙链接合集2026
2026-10-13 13:16
漫蛙manwa2登录网址
2026-10-13 13:14
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多









































