gpt4 book ai didi

php - CakePHP 中 SSL 的最佳实践

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:27 24 4
gpt4 key购买 nike

我想为所有页面实现 HTTPS。

我使用带有“Auth”组件的 CakePHP 2.3。

实际上我找到的唯一方法是添加“beforeFilter-condition”。

但这很脏,因为由于 Auth-Component,我有很多“非 SSL”请求。


AppController.php --->

class AppController extends Controller {

public function beforeFilter() {
if (env("SERVER_PORT") != "443") {
$this->Security->blackHoleCallback = 'forceSSL';
$this->Security->requireSecure();
}
}

public function forceSSL() {
$this->redirect('https://' . env('SERVER_NAME') . $this->here);
}

}




当我未登录并尝试访问我的网站时出现问题

  • 请求 --> 响应(因为)
  • GET hxxp://MYSITE/--> 302 hxxps://MYSITE/(beforeFilter-redirection)
  • GET hxxps://MYSITE/--> 302 hxxp://MYSITE/users/login(Auth组件)
  • GET hxxp://MYSITE/users/login --> 302 hxxps://MYSITE/users/login (beforeFilter-redirection)
  • GET hxxps://MYSITE/users/login --> 200
  • POST hxxps://MYSITE/users/login(带凭证)--> 302 hxxp://MYSITE/(Auth 组件)
  • GET hxxp://MYSITE/--> 302 hxxps://MYSITE/
  • 获取hxxps://MYSITE/--> 200

所以,你知道另一种方法吗?


注意:我不得不在 core.php 中强制保护我的 cookie,因为它们不是。

核心.php --->

Configure::write('Session', array(
'defaults' => 'php',
'ini' => array(
'session.cookie_secure' => true
)));




请注意,我还尝试通过修改 .htaccess 来强制使用 SSL,但我得到的只是无限循环。

编辑:

CakePHP 中默认的 .htaccess 是

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

我尝试添加的内容:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

最佳答案

最后,我选择的解决方案是:

  • 删除/app/webroot/.htaccess 和/app/.htaccess

  • 修改/.htaccess 为

.htaccess --->

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
  • 在 Cake 中禁用 URL 重写

核心.php --->

Configure::write('App.baseUrl', env('SCRIPT_NAME'));



现在通过 hxxps://www.mysite.com/index.php/controller/action

访问

关于php - CakePHP 中 SSL 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com