必须立即完成五项关键安全配置:生成并设置app_key密钥、关闭调试模式、限制logs目录web访问、正确配置app_url与信任代理、禁用开发工具及强化会话安全,并启用加密验证码。

将Laravel应用从开发环境推送到线上服务器时,必须立即完成五项关键安全配置,否则会话失效、加密异常、错误信息泄露甚至被攻击者利用。
生成并设置APP_KEY密钥
进入项目根目录,确保已执行composer install且php artisan命令可用。
运行php artisan key:generate,该命令会生成32字节base64编码的强随机密钥。
检查.env文件中APP_KEY=行:必须以base64:开头,【不能有前后空格、不能加引号、不能留空或使用默认值】。
执行php artisan config:clear清除配置缓存,避免旧密钥残留导致Cookie解密失败。
关闭调试模式
打开.env文件,将APP_DEBUG=true改为APP_DEBUG=false。
访问一个不存在的路由(如/test-404),确认返回的是简洁的404页面,而不是带堆栈、SQL、路径的详细异常页。
检查storage/logs/目录权限:Web服务器用户必须可写,但【禁止通过Web直接访问logs目录】,Nginx需配置location ~ ^/storage/logs/ { deny all; }。
配置APP_URL与信任代理
第一步:在.env中将APP_URL设为实际域名,协议必须匹配——HTTPS站点必须写https://yourdomain.com,HTTP站点写http://。
第二步:若使用Nginx反向代理或Cloudflare,打开app/Http/Middleware/TrustProxies.php,将$proxies属性明确列出可信IP段,例如['192.168.1.0/24', '10.0.0.1']。
第三步:绝对禁止把$proxies设为'*',这会导致伪造X-Forwarded-For绕过IP校验,引发会话劫持风险。
禁用开发工具与强化会话安全
方法一:移除Telescope —— 运行composer remove laravel/telescope,并删除config/telescope.php及对应服务提供者注册。
方法二:若必须保留Telescope,将其配置为仅限本地访问,在config/telescope.php中设置'middleware' => ['web', 'can:viewTelescope'],并在app/Providers/AuthServiceProvider.php中定义授权策略。
修改config/session.php:将'secure' => env('SESSION_SECURE_COOKIE', true)设为true(HTTPS强制启用),'http_only' => true防止JS读取,'same_site' => 'lax'缓解CSRF。
发布并启用mews/captcha验证码
执行composer require mews/captcha安装包。
运行php artisan vendor:publish --provider="Mews\Captcha\CaptchaServiceProvider"生成config/captcha.php。
编辑config/captcha.php,将'disable' => env('CAPTCHA_DISABLE', false)设为false,并开启'encrypt' => true启用加密存储。
在.env中添加CAPTCHA_DISABLE=false,确保生产环境不跳过验证。











