相关疑难解决方法(0)

重定向后PHP会话丢失

如何在PHP中重定向后解决丢失会话的问题?

最近,我遇到了一个非常常见的重定向失败会话问题.在搜索了这个网站后,我仍然找不到解决方案(虽然是最接近的).

更新

我找到了答案,我想我会在这里发布,以帮助遇到同样问题的人.

php session redirect shared-hosting session-cookies

122
推荐指数
6
解决办法
17万
查看次数

使用安全会话cookie在HTTP和HTTPS页面之间切换

更新:请注意,在不安全的HTTP和加密的HTTPS页面之间切换的每个网站都不可避免地容易出现SSL剥离.请考虑在整个站点使用HTTPS,虽然这既不能阻止SSL-strip,但至少这样可以让用户安全地调用站点,如果他在意的话.对于需要切换的站点,此方法可能仍是最佳选择.

这是一种常见的情况,即网站包含敏感数据的页面,只能使用HTTPS协议1访问,而其他页面应使用非关键数据访问.

我找到了一个解决方案,允许在安全和非安全页面之间切换,同时保持会话,并想要询问有关该概念中的缺陷的任何提示.你可以在这里找到整篇文章: 使用SSL安全会话cookie (当然我也很高兴听到,这是安全的).

问题

HTTPS确保客户端和服务器之间没有人可以窃听我们的通信并防止中间人攻击.不幸的是,这不适用于session-cookie,它也被发送到未加密的请求.

PHP使用参数$ secure提供函数session_set_cookie_params(...).这就是我们所需要的,但是当我们切换到不安全的页面时,它会让我们忘记我们的会话.

身份验证Cookie

身份验证cookie的想法是,当用户输入密码(增加其访问权限)时,我们会在不安全的会话cookie之外创建第二个cookie,并确保只有加密的HTTPS页面才能访问它.

https://www.example.com/login.php

<?php
  session_start();
  // regenerate session id to make session fixation more difficult
  session_regenerate_id(true);

  // generate random code for the authentication cookie and store it in the session
  $authCode = md5(uniqid(mt_rand(), true));
  $_SESSION['authentication'] = $authCode;

  // create authentication cookie, and restrict it to HTTPS pages
  setcookie('authentication', $authCode, 0, '/', '', true, true);

  print('<h1>login</h1>');
  ...
?>
Run Code Online (Sandbox Code Playgroud)

现在,每个页面(HTTPS和HTTP)都可以读取不安全的会话cookie,但是包含敏感信息的页面可以检查安全身份验证cookie.

https://www.example.com/secret.php

<?php
  session_start();

  // check that the …
Run Code Online (Sandbox Code Playgroud)

php encryption ssl https session-cookies

28
推荐指数
1
解决办法
1万
查看次数

PHP会话HTTP到HTTPS问题

我有一个(HTTPS)login.php页面,它仍然是HTTPS(即用户登录后进入帐户仪表板).现在问题是用户登录到安全仪表板时点击了非敏感页面(HTTP)about-us.php页面,会话不通过HTTP传输,因为我有session.cookie_secure = 1,这意味着用户似乎在HTTP页面上注销.

但是,当用户返回仪表板页面或任何敏感帐户页面时,我被告知他仍然应该登录(即从HTTP返回到HTTPS)?但事实并非如此,他似乎也登录了HTTPS连接?

我相信我错过了造成这个问题的事情.这是我的代码:

这是PHP头文件,在login.php页面上调用它来启动会话:

session_start();
session_regenerate_id(true); /*avoid session fixation attempt*/

/*Create and check how long session has been started (over 5 mins) regenerate id - avoid session hijack*/
if(!isset($_SESSION['CREATED'])) 
{
    $_SESSION['CREATED'] = time();/*time created session, ie from login/contact advertiser/email_confirm only ways for new session to start*/
} 
elseif(time() - $_SESSION['CREATED'] > 300) 
{
    /*session started more than 5 mins(300 secs) ago*/
    session_regenerate_id(true); /*change session ID for the current session and invalidate old session ID*/
    $_SESSION['CREATED'] = time(); /*update …
Run Code Online (Sandbox Code Playgroud)

php https http session-state

12
推荐指数
2
解决办法
1万
查看次数

为什么我的会话ID(JSESSIONID)在从https切换到http时会发生变化?java jsf

我有一个使用https的页面,当我从使用该https页面的bean重定向到某个http页面时.然后我的会话ID改变了.我怎么能阻止这种情况发生?请帮我.提前致谢 :)

java jsf

3
推荐指数
1
解决办法
4591
查看次数

移动到SSL后页面加载后丢失会话

更新:

该网站现在可以在所有浏览器上运行但是现在Chrome.我觉得这很奇怪 - 自从服务器切换到拥有SSL以来,这一切都已经出现了.

作为建议,我已将其置于应用程序中:

ini_set('session.use_trans_sid', true);
ini_set('session.use_cookies', true);
ini_set('session.use_only_cookies', true);

$https = false;

if(isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] != 'off') {
    $https = true;
}

$dirname = rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/';

session_name('money');
session_set_cookie_params(0, '/', $_SERVER['HTTP'], $https, true);
session_start();
Run Code Online (Sandbox Code Playgroud)

但是我仍然无法设置会话 - 应用程序基于MVC,因此根据URL中加载的页面需要控制器.

Sessions是否存在通过必需/包含文件传递的问题?

php apache ssl

2
推荐指数
1
解决办法
720
查看次数