【问题标题】:best way to use session without cookies via ge通过 ge 使用没有 cookie 的会话的最佳方式
【发布时间】:2011-07-08 15:39:35
【问题描述】:

我正在使用 PHP,出于某种原因,我想将会话从使用 cookie 切换到字符串,那么通过使用 GET 变量将会话与 cookie 一起使用的最佳方法是什么?我们是否需要在 GET 变量中使用会话 ID?还是其他一些事情?如果我将在 get 中使用带有会话 ID 的 GET 变量,那么我将如何根据该会话 ID 获取会话?如果有人有想法,请分享。

提前致谢。

【问题讨论】:

  • 强烈建议不要使用 GET 变量来传递会话 ID。想象一下您的用户登录到您的网站,然后在互联网上发布指向您网站的链接或其他东西。现在拥有该链接的任何人都可以假装他们以该用户身份登录。更不用说,它制作丑陋的网址。
  • 是的,我知道这一点,所以我也一定会寻找它的解决方案。如果您知道其他更好的方法,请告诉我,但不幸的是我必须使用 get
  • 我正在开发一个 fb 应用程序。和 IE8(取决于用户的安全设置)正在将站点添加到不受信任和阻止的 cookie,所以我的客户希望它有会话,然后可以通过 GET 管理,这就是为什么..
  • 关于使用 GET 传递 cookie 的另一条评论,它存储在浏览器周围的许多地方,如历史记录,更容易窃听。从安全角度来看,这通常是不可取的。如果您坚持这样做,可能值得花一些时间来确保 cookie 更安全。一些想法,例如确保它不可转让(包括用户 IP 作为 cookie 的一部分)。确保用户可以选择退出。确保用户只能有一个并发会话,并且服务器上的 cookie 超时时间很短,这将有助于解决问题
  • @Rob 感谢 Rob 的评论,我知道这不好,但是当我在一年多前发布这个问题时,这是我的一位客户要求这样做的。所以我在这里问了。

标签: php session session-cookies


【解决方案1】:

假设您使用的是 Apache,

php_flag session.use_trans_sid = 1
php_value session.use_only_cookies 0

不过有good reasons why cookies are better

【讨论】:

  • 我知道 cookie 更好,但如果我没有使用 cookie 的选项,那么解决方案是什么?
  • 据我所知,如果您执行上述操作,它将默认使用 cookie,如果它们不可用,它将回退到使用 $_GET 字符串。会话可以从 $_SESSION 访问,无论它们是如何设置的。
  • 为什么不能选择使用 cookie?我认为默认情况下任何浏览器都不会禁用会话 cookie,如果用户手动禁用它们,那么也没有多少其他网站可以为它们工作。
  • 我相信在 httpd.conf、.htaccess 中或使用 PHP 的 ini_set() 应该都能正常工作。
  • @Hafiz 如果您的客户要求您通过 $_GET (querystring) 运行会话,那么作为开发人员,您有责任告知他的应用程序可能带来的巨大安全风险。跨度>
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 2016-08-20
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 2012-08-18
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多