如何为X-Frame-Options配置symfony2?

时间:2014-01-30 14:05:12

标签: apache .htaccess symfony

如何在symfony2应用程序中停止点击劫持?

经过研究,我发现我应该在.htaccess文件中添加以下行

标题附加X-FRAME-OPTIONS“DENY”

但在添加.htaccess文件后,我收到“内部服务器错误”

FYI

我添加了x-frame选项行,如下所示。

<IfModule mod_rewrite.c>
    RewriteRule .? %{ENV:BASE}/app_dev.php [L]
    Header append x-frame-options "DENY"
</IfModule>

在symfony2中是否还有其他选项可以应用X-frame-options?

2 个答案:

答案 0 :(得分:5)

看起来你无权在apache中修改标头。 如果要在Symfony中执行此操作,则应创建ResponseListener并为每个响应添加标头。这是一个例子:

<强> ResponseListener.php:     

use Symfony\Component\HttpKernel\Event\FilterResponseEvent;

class ResponseListener
{
    public function onKernelResponse(FilterResponseEvent $event)
    {   
        $event->getResponse()->headers->set('x-frame-options', 'deny');
    }   
}

<强> services.yml

kernel.listener.response_listener:
    class: MyCorp\MyBundle\Listener\ResponseListener
    tags:
       - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }

答案 1 :(得分:0)

感谢Klipach的帮助,

我正在编写另一个替代方案来启用X-frame-options

在.htaccess文件中添加以下行

Header append x-frame-options "SAMEORIGIN"

如果您收到内部服务器错误。这意味着禁用标头模块 所以使用下面的命令启用

sudo a2enmod headers
sudo service apache2 restart