ThinkPHP如何防止SQL注入与权限漏洞_输入过滤与参数绑定
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 开关影响参数绑定吗?
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















