我有一个登录屏幕,我强迫ssl,所以像这样:https: //www.foobar.com/login 然后他们登录后,他们被移动到主页:https: //www.foobar.com/dashbaord
但是,我想在登录后将人员从SSL中移除(以节省CPU),因此在检查到他们实际登录https://www.foobar.com/dashbaord后我将其移至 http:// www.foobar.com/dashbaord
好吧,这总是似乎消灭了会话变量,因为当页面再次运行时,它确认它们已登录(如同所有页面一样)并且会话似乎不存在,因此它将它们移动到登录屏幕.
奇怪/结果:
我尝试了什么:
所以我觉得这与创建cookie但没有被阅读有关.
环境:1.Debian 2. Apache 2 3. Mysql 4 4. PHP 5 5. CakePHP 6.会话正在保存PHP默认,作为文件
我在IE中有一个奇怪的奇怪怪癖.当用户登录到站点时,我正在生成新的会话ID,因此需要覆盖cookie.流程基本上是:
https://secure.example.com/users/login页面,自动接收会话ID客户端收到以下set-cookie标头以及302重定向到https://secure.example.com/users/mypage:
的CakePHP =删除; expires = Sun,05-Apr-2009 04:50:35 GMT; path =/
CAKEPHP = 98hnIO23 ......; 到期=周一,2010年4月12日04:50:36 GMT; 路径= /; 安全
客户端应该访问https://secure.example.com/users/mypage,显示新的会话ID.
这适用于除IE之外的所有浏览器(在7和8中测试).IE保留旧的,未经身份验证的会话ID,并重定向回登录页面.它适用于我的本地测试环境(使用自签名证书https://localhost:8443/...),但不适用于实时服务器.
我正在使用CakePHP并只发出一个$this->Session->renew()产生上述cookie头的a.
任何想法如何让IE接受新的cookie?
这是完整的标题:
HTTP/1.0 302 Moved Temporarily
Date: Thu, 08 Apr 2010 02:54:30 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Set-Cookie: CAKEPHP=deleted; expires=Wed, …Run Code Online (Sandbox Code Playgroud) 出于某种原因,我无法在设置任何页面后从我的CakePHP应用程序中读取任何cookie,唯一返回的是乱码文本.
我的代码就像这样简单:
$this->Cookie->write('Region', 'test');
$reg = $this->Cookie->read('Region');
pr($reg);
Run Code Online (Sandbox Code Playgroud)
我取消注释$ this-> Cookie-> write()行,我得到的是一堆随机控制字符.我最近也升级到了CakePHP 1.3,但AFAIK这不应该影响这样的cookie ......这个工作正常,直到我更换服务器,这一定是我问题的根源.
更新 在进一步探测之后我发现这是一个已知的问题,用于PHP的Suhosin安全补丁影响rand()和srand()方法,我已经配置了Suhosin以允许rand()函数但是它仍在发生,是否存在那里有更有效的工作吗?
我使用CakePHP 2.4.我的网站上有OAuth登录信息.%99.5的登录成功,但%0.5失败.我好几个月都有这个错误.我尝试了很多东西来调试和记录,但我仍然没有解决问题.虽然大部分要求都很好,但我需要解决一小部分问题.
场景是这样的:
oauth_token在用户的会话中aaa1234CakePHP创建PHPSESSID cookie并在此cookie中保存会话ID.
我将用户重定向到Twitter服务器,用户确认我的应用程序
oauth_token和oauth_verifier和获得access_tokens.会话ID是aaa1234.一切都很好.oauth_token在当前会话中找不到用户.当我检查会话ID时,我看到ID已更改,ID现在已更改bbb2345对于场景b:
现在看起来用户有新的会话ID.oauth_token在新的会话中找不到.但请注意,旧会话数据存在于/tmp/sessions/文件夹中.
会话不存在会话ID cookie aaa1234.但是我在2天前设置的另一个跟踪cookie存在于cookie中.
我检查用户代理.
当用户第一次到来并且用户从Yahoo服务器返回时,它是相同的.
此故障情况发生在Chrome,Firefox,移动浏览器或其他浏览器中,因此我无法控制浏览器类型.
我应该检查更多以进行诊断?
我的CakePHP core.php设置:
Configure::write('Session', array( 'defaults' => 'cake' ));
Configure::write('Session.cookie', 'MYPHPSESSID');
Configure::write('Session.timeout', 120);
Configure::write('Security.level', 'medium');
Run Code Online (Sandbox Code Playgroud)
其他设置是默认文件中提到的:https: //github.com/cakephp/cakephp/blob/2.5/app/Config/core.php#L182
编辑:通过使用此答案,我检查了cookie.20%的错误用户禁用了cookie.我问过个人和用户确认的cookie选项.但似乎其他用户没有禁用cookie.还有一些用户使用Android WebViews访问我的网站.在WebView客户端中,我确信我不会禁用cookie.此外,99%的WebView用户都可以成功使用网站.
在注册期间使用SSL 5页
https://www.mysite.com/step3 - Auth组件登录
在第3步之后,我使用Auth Component创建用户的Session(自动使用户通过Auth组件登录).但是在第5步之后它将重定向到下一页
我使用SSL组件非强制方法将HTTPS更改为HTTP.一切正常,但问题是,一旦我从步骤5(HTTPS)到达欢迎页面,我的Auth组件会话到期.我尝试调试它无法找到任何解决方案.请注意,没有HTTPS,所有步骤和会话都可以正常工作
我有一个Cakephp 2+站点需要某些操作来要求SSL连接(即登录,密码重置等),但我不要求整个站点是安全的.在实现这一点时,我发现在SSL和非SSL页面之间移动时没有保存Session.我在堆栈/sf/answers/844766961/上发现了这个问题解决了我的问题,但我想知道成本是多少.
上述问题的答案需要在lib/Cake/Model/Datasource /中注释掉一行,如下所示:
if (!isset($sessionConfig['ini']['session.cookie_secure']) && env('HTTPS')){
// $sessionConfig['ini']['session.cookie_secure'] = 1; // <-- Commented Out
}
Run Code Online (Sandbox Code Playgroud)
这样做有什么安全后果吗?另外,有没有办法在不影响蛋糕核心文件的情况下执行此操作,因为这通常不受欢迎?
提前致谢.
cakephp ×6
php ×3
cakephp-2.0 ×2
cookies ×2
session ×2
ssl ×2
http-headers ×1
security ×1
suhosin ×1