ThinkPHP在Debian中的安全配置指南
try_files uri uri/ /index.php?query_string;指令存在,以支持ThinkPHP的PATHINFO模式,避免路由失效导致的404错误。mod_rewrite模块(sudo a2enmod rewrite),并配置.htaccess文件支持URL重写,提升应用安全性。php.ini文件,关闭调试模式(display_errors = Off),防止敏感信息(如数据库密码、服务器路径)泄露。opcache.enable=1),减少脚本执行时间,降低被暴力破解的风险。config/app.php(或.env文件)中设置强随机密钥(APP_KEY),用于数据加密(如Cookie、Session)和身份验证。密钥长度建议不少于32位,包含大小写字母、数字和特殊字符。vendor目录下不需要的第三方包),在config/app.php中关闭调试工具栏(app_debug = false),减少攻击面。Validate类定义验证规则(如name必填、email格式正确),在控制器中对用户输入进行校验。config/app.php中设置app_filter),如strip_tags(去除HTML标签)、htmlentities(转义特殊字符),防止XSS攻击。Model)或ORM进行数据库操作,ThinkPHP会自动使用预处理语句和参数绑定。?占位符或命名绑定(如Db::execute("SELECT * FROM user WHERE id = ?", [$id])),避免SQL语句拼接。config/app.php中开启CSRF令牌(csrf_on = true),在表单中添加{{ csrf_token() }}字段,并在控制器中通过checkToken方法验证令牌有效性。jpg、png)、大小(如不超过2MB),在config/upload.php中配置exts和size参数。/var/www/uploads),并对上传文件进行重命名(如添加时间戳前缀),防止恶意文件执行。www-data)对项目目录拥有读写权限,但禁止执行权限(chmod -R 755 /var/www/html/thinkphp)。.env、config/database.php)设置为仅所有者可读写(chmod 600 /var/www/html/thinkphp/.env),防止敏感信息泄露。runtime(缓存、日志)、public(入口文件)目录分开,public目录设置为Web可访问,其他目录限制访问权限(如chmod -R 750 /var/www/html/thinkphp/runtime)。ufw(Uncomplicated Firewall)限制入站流量,仅允许HTTP(80端口)、HTTPS(443端口)和SSH(22端口)访问,阻止非法IP地址的连接(如sudo ufw allow 80,443,22/tcp)。listen 443 ssl;),加密数据传输,防止中间人攻击。fail2ban工具监控日志文件,对频繁访问的IP地址进行封禁(如5分钟内尝试登录失败10次),防止DDoS攻击和暴力破解。config/log.php中配置日志级别(如level = 'error'),记录错误信息、访问日志和SQL日志,便于排查安全问题。grep、awk等工具分析日志文件(如/var/log/nginx/error.log),查找异常请求(如大量404错误、SQL注入尝试),及时采取措施。