sudo apt update && sudo apt upgrade,确保Debian系统及依赖库(如Apache/Nginx、PHP)为最新版本,修复已知安全漏洞。sudo apt install fail2ban安装fail2ban,防止暴力破解;使用sudo ufw allow 22/tcp && sudo ufw enable配置防火墙,仅开放必要端口(如SSH的22端口、Web服务的80/443端口)。composer update topthink/framework,确保框架版本为当前最新(如ThinkPHP 8.x),获取最新的安全补丁。composer.json中固定依赖库版本(如"topthink/framework": "^8.0"),避免意外升级引入新漏洞;执行composer install --no-dev移除开发依赖,减少攻击面。php think encrypt:key命令生成随机密钥(如base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)。.env文件:将生成的密钥填入项目根目录的.env文件中(APP_KEY=base64:xxxxxxxx...),用于加密会话、Cookie等敏感数据,防止数据篡改或伪造。.env文件中将APP_DEBUG设置为false(APP_DEBUG=false),关闭详细错误信息显示。避免泄露数据库结构、代码路径等敏感信息,防止黑客利用错误提示进行攻击。app/validate/User.php),定义字段规则(如name需必填、email需符合邮箱格式、password需包含大小写字母和数字),在控制器中调用$validate->check()方法验证输入:$validate = new \app\validate\User; if (!$validate->check(input('post.'))) { return json(['error' => $validate->getError()]); } config/app.php中设置default_filter,对所有输入数据进行自动过滤(如去除空格、转义HTML标签、转换特殊字符):'default_filter' => 'trim,strip_tags,htmlspecialchars' 防止SQL注入、XSS攻击等。Db::table('user')->where('id', '=', input('id'))->find())或预处理语句,避免直接拼接SQL查询。ORM会自动处理参数转义,预处理语句将代码与数据分离,彻底杜绝SQL注入漏洞。{:变量}语法(如{:htmlspecialchars($user_input)}),自动转义HTML特殊字符(如<转为<),防止恶意脚本执行。config/app.php中设置xss_filter为true,对所有输出数据进行XSS过滤:'xss_filter' => true 增强对XSS攻击的防御能力。config/csrf.php中设置enable为true('enable' => true),开启CSRF验证功能。POST、PUT、DELETE),并设置令牌名称(如token_name为__token__):'methods' => ['POST', 'PUT', 'DELETE'], 'token_name' => '__token__', 'cookie_name' => 'csrf_token' 在表单中添加{{ csrf_field() }}(ThinkPHP模板语法),生成隐藏的CSRF令牌字段,防止跨站请求伪造攻击。www-data)对项目目录的权限应遵循最小权限原则: chown -R www-data:www-data /var/www/thinkphp && chmod -R 755 /var/www/thinkphpruntime/目录(临时文件):chmod -R 777 /var/www/thinkphp/runtime(需确保该目录仅用于存储临时文件,无执行权限)uploads/目录(上传文件):chmod -R 755 /var/www/thinkphp/uploads,并通过open_basedir限制PHP访问范围(在php.ini中设置open_basedir = /var/www/thinkphp/:/tmp/),防止非法文件访问。uploads/目录执行PHP文件:location ~ ^/uploads/.*\.php$ { deny all; return 403; } 防止黑客上传Webshell并执行。config/session.php中设置:'type' => 'redis', // 使用Redis存储会话,提升性能与安全性 'expire' => 1800, // 会话过期时间为30分钟 'encrypt' => true // 加密会话数据 避免会话固定攻击,提升会话数据的安全性。config/cookie.php中设置:'secure' => true, // 仅通过HTTPS传输Cookie 'httponly' => true, // 禁止JavaScript访问Cookie 'prefix' => 'tp_' // 设置Cookie前缀,避免冲突 防止Cookie被窃取或篡改,提升用户会话的安全性。sudo certbot --apache或sudo certbot --nginx),获取cert.pem(证书)和privkey.pem(私钥)文件。server { listen 80; server_name yourdomain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 其他配置... } 加密数据传输,防止中间人攻击和数据泄露。config/app.php中设置log配置项,记录异常信息和访问日志:'log' => [ 'type' => 'file', // 使用文件日志 'level' => ['error', 'info'], // 记录错误和信息级别日志 'path' => '/var/www/thinkphp/runtime/log', // 日志存储路径 ] eval()、system())、未过滤的用户输入、硬编码的敏感信息(如数据库密码)。composer audit命令检查依赖库的安全漏洞,及时升级存在漏洞的依赖库。<script>alert(1)</script>)、伪造CSRF请求,确认安全配置是否有效拦截攻击。.env文件、config/目录、数据库,防止配置丢失或被篡改。