Php 如何在负载平衡器(SSL_终端)后面配置带有Laravel 5的SSL?

Php 如何在负载平衡器(SSL_终端)后面配置带有Laravel 5的SSL?,php,laravel,ssl,laravel-5,load-balancing,Php,Laravel,Ssl,Laravel 5,Load Balancing,我有一个部署到AWS EC2 web实例的laravel 5项目,在一个带有ssl终端的ELB后面 对于资产之类的东西,默认情况下,Laravel使用当前使用的任何方案。然而,我注意到,由于https流量由ELB解密,并通过http转发到EC2节点,因此Laravel认为它目前没有使用https,因此使用http作为资产。这显然造成了问题 根据我的发现,Laravel使用X_FORWARDED_PROTO头检查这种代理设置。但是我发现这个头不存在,而是有一个HTTP_X_转发的_协议头。在中,我

我有一个部署到AWS EC2 web实例的laravel 5项目,在一个带有ssl终端的ELB后面

对于资产之类的东西,默认情况下,Laravel使用当前使用的任何方案。然而,我注意到,由于https流量由ELB解密,并通过http转发到EC2节点,因此Laravel认为它目前没有使用https,因此使用http作为资产。这显然造成了问题

根据我的发现,Laravel使用X_FORWARDED_PROTO头检查这种代理设置。但是我发现这个头不存在,而是有一个HTTP_X_转发的_协议头。在中,我发现,在“HTTP_”前面加上前缀是php所做的事情。如果这是真的,那么为什么Laravel不检查它,因为它是一个纯粹的php框架

我读过一些文章说要使用类似的东西,但不清楚为什么Laravel默认情况下不检查这些标题


如何配置Laravel接受HTTPXXJORDEDIG**头,或者以其他方式配置它来知道我当前的方案是HTTPS?< /P> < P> Laravel没有默认检查这些,因为这些头可以被简单地注入到请求中(即伪造),并创建一个理论攻击向量到您的应用程序中。恶意用户可以让Laravel认为某个请求是安全的,或者是不安全的,这反过来可能会导致某些内容被泄露

几个月前,当我使用Laravel 4.2遇到同样的问题时,我的解决方案是创建一个自定义请求类,并告诉Laravel使用它

#File: bootstrap/start.php
//for custom secure behavior -- laravel autoloader doesn't seem here yet?
require_once realpath(__DIR__) . 'path/to/my/MyCustomRequest.php';

Illuminate\Foundation\Application::requestClass('MyCustomRequest');
然后在
MyCustomReuqestClass
中,我扩展了基本请求类并添加了额外的is/is不安全逻辑

class Request extends \Illuminate\Http\Request
{
    /**
     * Determine if the request is over HTTPS, or was sent over HTTPS
     * via the load balancer
     *
     * @return bool
     */
    public function secure()
    {        
        $secure = parent::secure();
        //extra custom logic to determine if something is, or is not, secure
        //...
        return $secure;
    }    

    public function isSecure()
    {

        return $this->secure();
    }
}
我现在不会这样做。在使用该框架几个月后,我意识到Laravel的请求类将Symfony请求类作为父类,这意味着Laravel请求继承了Symfony请求对象的行为

这意味着您可以告诉Laravel应该信任哪些代理服务器

Request::setTrustedProxies(array(
    '192.168.1.52' // IP address of your proxy server
));

这段代码告诉Laravel它应该信任哪些代理服务器。之后,它应该拾取标准的“forwarded for”头。您可以在中阅读有关此功能的更多信息。

是的,看起来是这样做的。谢谢