一、系统与框架基础安全
app_debug设为false),避免暴露敏感错误信息(如数据库结构、路径);开启日志记录(app_trace设为false),仅记录必要操作日志。unattended-upgrades实现系统自动更新;使用ufw配置防火墙,仅开放SSH(22)、HTTP(80)、HTTPS(443)等必要端口;禁用不必要的服务(如Telnet、FTP),降低攻击面。二、输入验证与输出过滤
Validate类定义验证规则(如require、email、regex),覆盖所有用户输入场景(表单、URL参数、API请求);对特殊字符(如<、>、'、")进行过滤,防止恶意代码注入。{{ }}语法;若需手动输出,使用htmlspecialchars()函数转义HTML特殊字符,避免脚本执行。Db::name('table')->where('field', $value)->select())或ORM(User::where('name', $name)->find()),避免直接拼接SQL语句;禁止使用原生Db::query()方法执行用户输入的SQL。三、身份认证与授权控制
csrf_on设为true),在表单中添加{{ csrf_token() }},服务器端验证Token有效性。Auth类实现权限管理,为用户分配角色(如管理员、普通用户),限制对敏感接口(如后台管理、数据修改)的访问;自定义权限规则(如admin角色可访问/admin/*路径)。四、文件上传与内容安全
Upload类处理文件上传,设置文件类型白名单(如image/jpeg、image/png)、大小限制(如≤2MB)、存储路径(如runtime/uploads/);上传后对文件进行病毒扫描(如ClamAV),禁止执行上传目录的PHP脚本(chmod 755 uploads/)。755(可读可执行),runtime/、uploads/目录设为775(可写),但禁止执行PHP(chmod -R 755 uploads/);开启ThinkPHP防篡改模块,拦截对PHP文件的非法修改。五、网络安全与传输加密
return 301 https://$server_name$request_uri;),防止中间人攻击和数据泄露。iptables或firewalld限制单个IP的访问频率(如每分钟最多60次请求),防止DDoS攻击;通过ThinkPHP中间件限制敏感路径(如/admin/login)的访问来源(如仅允许公司IP段)。六、日志监控与应急响应
app_log设为true),记录错误日志(runtime/log目录)、访问日志(runtime/access目录);定期分析日志,排查异常行为(如频繁的登录失败、非法文件访问)。