使用防火墙映射中的参数时Symfony安全组件的严重错误?

时间:2014-07-21 21:19:23

标签: symfony symfony-2.3

我想我可能在使用长参数名称的Symfony 中发现了防火墙组件的严重问题。我发布它作为获得确认的问题。

拿这个parameters.yml

router.request_context.host: my.domain.com
domain: my.domain.com

%domain%中使用短片security.yml时:

access_control:
  - { host: admin.%domain%, path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
  - { host: admin.%domain%, path: ^/, roles: IS_AUTHENTICATED_REMEMBERED }

一切按预期工作。生成的appProdProjectContainer.php中的相关部分(为可重复性添加了返回值):

protected function getSecurity_Firewall_Map_Context_AdminService()
{
    // ...
    $h = new \Symfony\Component\HttpFoundation\RequestMatcher(
        '^/login$', 'admin.my.domain.com'
    );
    $i = new \Symfony\Component\HttpFoundation\RequestMatcher(
        '^/', 'admin.my.domain.com'
    );
    $j = new \Symfony\Component\Security\Http\AccessMap();
   // ...
}

问题是,当您使用%router.request_context.host%时,它会被转换为localhost,即您的防火墙不适用于生产网站。

请注意%router.request_context.host%用于使用控制台命令发送邮件:在security.yml中使用它可能会导致应用程序出现巨大的安全漏洞。

0 个答案:

没有答案