Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
zf2骨架应用程序,将所有内容转换为https_Http_Security_Https_Zend Framework2 - Fatal编程技术网

zf2骨架应用程序,将所有内容转换为https

zf2骨架应用程序,将所有内容转换为https,http,security,https,zend-framework2,Http,Security,Https,Zend Framework2,我想知道是否有一种快速方法可以将基于zf2框架的现有zend framework 2应用程序转换为完整的https?现在一切都在http包含ajax请求可能不是完美的解决方案,但是这里有一些具有一些特性的模块 希望有帮助 最简单、最安全的方法之一是将http的所有传入流量/请求永久重定向到https 您可以通过为端口80向虚拟主机添加重定向规则来实现这一点。查看有关如何执行此操作的详细信息 您应该考虑关于这个主题的帖子安全> StExchange。com /代码>。此StackExcha

我想知道是否有一种快速方法可以将基于zf2框架的现有zend framework 2应用程序转换为完整的
https
?现在一切都在
http
包含ajax请求

可能不是完美的解决方案,但是这里有一些具有一些特性的模块


希望有帮助

最简单、最安全的方法之一是将
http
的所有传入流量/请求永久重定向到
https

您可以通过为端口80向虚拟主机添加重定向规则来实现这一点。查看有关如何执行此操作的详细信息


您应该考虑关于这个主题的帖子<代码>安全> StExchange。com /代码>。此StackExchange站点不是解决此类安全问题的合适位置。

我在一个使用多个站点(一些是http,另一些是https)的项目上做了这项工作

在module.config中,需要向onBootstrap函数添加路由侦听器

use Zend\Mvc\MvcEvent;
...

    $eventManager = $event->getApplication()->getEventManager();
    $eventManager->attach(MvcEvent::EVENT_ROUTE, array($this, 'onRoute'), -100);
public function onRoute(MvcEvent $event)
    {
        $uri = $event->getRequest()->getUri();
        $scheme = $uri->getScheme();
        if ($scheme !== 'https') {
            $uri->setScheme('https');
            $response = $event->getResponse();
            $response->getHeaders()->addHeaderLine('Location', $uri);
            $response->setStatusCode(302);
            $response->sendHeaders();
            $event->stopPropagation(true);
        }
    }
并添加onRoute函数

use Zend\Mvc\MvcEvent;
...

    $eventManager = $event->getApplication()->getEventManager();
    $eventManager->attach(MvcEvent::EVENT_ROUTE, array($this, 'onRoute'), -100);
public function onRoute(MvcEvent $event)
    {
        $uri = $event->getRequest()->getUri();
        $scheme = $uri->getScheme();
        if ($scheme !== 'https') {
            $uri->setScheme('https');
            $response = $event->getResponse();
            $response->getHeaders()->addHeaderLine('Location', $uri);
            $response->setStatusCode(302);
            $response->sendHeaders();
            $event->stopPropagation(true);
        }
    }
这将强制所有http请求重定向到https

我希望这有帮助