如何在Laravel 5.6中为Heroku配置可信代理中间件
在Laravel中为Heroku配置可信代理的正确方式
如果你正在Heroku上部署Laravel应用,处理负载均衡的请求头时一定要注意可信代理的配置,不然可能会带来安全风险。
关键注意点
Heroku的路由器不会设置Forwarded和X-Forwarded-Host这两个请求头,但当你开启了可信代理后,Symfony的Request组件默认会信任所有转发类请求头。为了避免恶意请求利用这一点,必须明确阻止Laravel信任这两个头。
最终配置代码
修改你的app/Http/Middleware/TrustProxies.php文件,调整为以下内容:
<?php namespace App\Http\Middleware; use Illuminate\Http\Middleware\TrustProxies as Middleware; use Illuminate\Http\Request; class TrustProxies extends Middleware { /** * The trusted proxies for this application. * * @var array<int, string>|string|null */ protected $proxies = '*'; /** * The headers that should be used to detect proxies. * * @var int */ protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO; }
配置说明
$proxies = '*':因为Heroku的代理IP是动态变化的,所以设置为信任所有代理是合理的选择。$headers:明确指定只信任X-Forwarded-For、X-Forwarded-Port和X-Forwarded-Proto这三个头,排除了Forwarded和X-Forwarded-Host,完全适配Heroku的环境要求。
内容的提问来源于stack exchange,提问作者flyingL123
相关产品推荐
相关产品推荐

