首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在负载均衡器(ssl_termination)后面使用Laravel5配置SSL?

如何在负载均衡器(ssl_termination)后面使用Laravel5配置SSL?
EN

Stack Overflow用户
提问于 2015-05-02 01:52:09
回答 1查看 9.7K关注 0票数 13

我有一个laravel 5项目部署到AWS实例中,在EC2终止的ELB后面。

对于像资产这样的东西,Laravel默认使用当前使用的任何方案。然而,我注意到,由于https流量由ELB解密并通过http转发到EC2节点,因此Laravel认为它当前没有使用https,因此使用http作为资源。这显然是在制造问题。

据我所知,Laravel使用X_FORWARDED_PROTO头检查这种代理设置。然而,我发现这个头并不存在,而是有一个HTTP_X_FORWARDED_PROTO头。在researching this中,我发现前缀"HTTP_“是php所做的事情。如果这是真的,那么为什么Laravel不去检查它,因为它是一个纯粹的php框架?

我读过一些文章,说要使用像Fideloper's Trusted Proxies这样的东西,但还不清楚为什么Laravel不默认检查这些头文件。

我如何配置Laravel接受https报头,或者如何配置它使其知道我当前的方案是HTTP_X_FORWARDED_*?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-02 02:49:06

默认情况下,Laravel不会检查这些,因为这些头部可以简单地注入到请求中(即伪造的),这会在您的应用程序中创建一个理论上的攻击矢量。恶意用户可以使Laravel认为请求是安全的或不安全的,这反过来可能导致某些东西被泄露。

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

代码语言:javascript
复制
#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-not安全逻辑

代码语言:javascript
复制
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的request类将Symfony请求类作为父请求,这意味着Laravel请求继承Symfony请求对象的行为。

这意味着你可以告诉Laravel它应该信任哪个代理服务器,如下所示

代码语言:javascript
复制
Request::setTrustedProxies(array(
    '192.168.1.52' // IP address of your proxy server
));

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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29992233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档