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

马赫里奥

我有一个laravel 5项目部署到AWS EC2 Web实例,位于带有ssl终止的ELB后面。

对于资产之类的东西,Laravel默认使用当前使用的任何方案。但是,我已经注意到,由于ELB解密https流量并通过http转发到EC2节点,因此Laravel认为它当前不使用https,因此使用http作为资产。这显然引起了问题。

根据我的发现,Laravel使用X_FORWARDED_PROTO标头检查这种代理设置。但是我发现此标头不存在,而是有一个HTTP_X_FORWARDED_PROTO标头。研究这一点时,我发现php会在前缀“ HTTP_”之前进行操作。如果是这样,那么为什么Laravel不检查它,因为它是纯PHP框架?

我读过一些文章说要使用Fideloper的Trusted Proxies之东西,但是目前还不清楚为什么Laravel默认不检查这些标头。

如何配置Laravel接受HTTP_X_FORWARDED_ *标头,或者配置它以了解我当前的方案是https?

艾伦·斯托姆

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-not安全逻辑

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”标题。您可以在Symfony文档中阅读有关此功能的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在负载均衡器后面配置 Docker 容器?

来自分类Dev

Nginx配置SSL负载均衡器

来自分类Dev

如何在负载均衡器后面的API MANAGER中使用apiKey配置IP限制访问?

来自分类Dev

Nginx负载均衡器SSL证书

来自分类Dev

负载均衡器后面的 .NET Core VMS 上的 SSL

来自分类Dev

负载均衡器SSL终止和安全cookie

来自分类Dev

仅当使用SSL终止负载均衡器时ajax文件上传失败

来自分类Dev

如何在不带负载均衡器的GCP上配置静态网站(仅http)?

来自分类Dev

如何在 AWS Elastic Beanstalk 环境中配置负载均衡器?

来自分类Dev

Nginx 负载均衡器配置

来自分类Dev

AWS Elastic Beanstalk负载均衡器SSL / HTTPS无法正常工作

来自分类Dev

机架负载均衡器上的间歇性ssl证书错误

来自分类Dev

Kubernetes负载均衡器终止SSL以反向代理入口DigitalOcean

来自分类Dev

SSL用于ARR负载均衡器来管理2个网站

来自分类Dev

应用AWS SSL证书后的负载均衡器运行状况检查

来自分类Dev

AWS 负载均衡器 - 所有 HTTPS 请求都导致 503 错误,但 SSL 有证书?

来自分类Dev

在 Forge 负载均衡器上安装 LetsEncrypt SSL 证书时出错

来自分类Dev

负载均衡器和服务器之间的通信是否需要 SSL 证书?

来自分类Dev

使用CloudFormation为v2负载均衡器配置自定义SSLPolicy

来自分类Dev

哪个负载均衡器支持主/从配置?

来自分类Dev

配置 elastic-beanstalk 负载均衡器安全组

来自分类Dev

服务器上的AWS Load Balancer,静态IP和SSL终端(不是负载均衡器)

来自分类Dev

带有负载均衡器的 aws ssl - ec2 实例 https 请求似乎没有被 ELB 终止

来自分类Dev

如何在弹性均衡器之类的负载均衡器后面设置双http和https服务器

来自分类Dev

如何配置入口以将服务部署到子域而无需创建新的负载均衡器

来自分类Dev

如何为我的ElasticBeanstalk应用程序覆盖诸如负载均衡器和容量之类的配置

来自分类Dev

如何将配置文件添加到AWS应用程序负载均衡器?

来自分类Dev

如何使Rack :: Attack在负载均衡器后面工作?

来自分类Dev

Apache负载均衡器中读取工作程序属性配置时出错

Related 相关文章

  1. 1

    如何在负载均衡器后面配置 Docker 容器?

  2. 2

    Nginx配置SSL负载均衡器

  3. 3

    如何在负载均衡器后面的API MANAGER中使用apiKey配置IP限制访问?

  4. 4

    Nginx负载均衡器SSL证书

  5. 5

    负载均衡器后面的 .NET Core VMS 上的 SSL

  6. 6

    负载均衡器SSL终止和安全cookie

  7. 7

    仅当使用SSL终止负载均衡器时ajax文件上传失败

  8. 8

    如何在不带负载均衡器的GCP上配置静态网站(仅http)?

  9. 9

    如何在 AWS Elastic Beanstalk 环境中配置负载均衡器?

  10. 10

    Nginx 负载均衡器配置

  11. 11

    AWS Elastic Beanstalk负载均衡器SSL / HTTPS无法正常工作

  12. 12

    机架负载均衡器上的间歇性ssl证书错误

  13. 13

    Kubernetes负载均衡器终止SSL以反向代理入口DigitalOcean

  14. 14

    SSL用于ARR负载均衡器来管理2个网站

  15. 15

    应用AWS SSL证书后的负载均衡器运行状况检查

  16. 16

    AWS 负载均衡器 - 所有 HTTPS 请求都导致 503 错误,但 SSL 有证书?

  17. 17

    在 Forge 负载均衡器上安装 LetsEncrypt SSL 证书时出错

  18. 18

    负载均衡器和服务器之间的通信是否需要 SSL 证书?

  19. 19

    使用CloudFormation为v2负载均衡器配置自定义SSLPolicy

  20. 20

    哪个负载均衡器支持主/从配置?

  21. 21

    配置 elastic-beanstalk 负载均衡器安全组

  22. 22

    服务器上的AWS Load Balancer,静态IP和SSL终端(不是负载均衡器)

  23. 23

    带有负载均衡器的 aws ssl - ec2 实例 https 请求似乎没有被 ELB 终止

  24. 24

    如何在弹性均衡器之类的负载均衡器后面设置双http和https服务器

  25. 25

    如何配置入口以将服务部署到子域而无需创建新的负载均衡器

  26. 26

    如何为我的ElasticBeanstalk应用程序覆盖诸如负载均衡器和容量之类的配置

  27. 27

    如何将配置文件添加到AWS应用程序负载均衡器?

  28. 28

    如何使Rack :: Attack在负载均衡器后面工作?

  29. 29

    Apache负载均衡器中读取工作程序属性配置时出错

热门标签

归档