【问题标题】:Cookies securityCookie 安全
【发布时间】:2016-12-07 19:38:53
【问题描述】:

我正在实现我的第一个用户登录,我在 Stack 上阅读了一些关于 sessionscookies 中存储登录信息的便利性的帖子,但我的主要问题仍然存在:将 userID/userCode 存储在 cookie 中以让用户保持登录状态是否如此不安全?

换句话说,是否可以将 cookie 下载到笔式驱动器上,将其下载到另一台 PC,连接到网站并被识别为已登录?如果是这样,像 Facebook 和亚马逊这样的巨头是如何实施这个系统来避免安全问题的?

那么,是否应该完全避免为此目的使用 cookie 来支持会话(尽管用户必须每次都登录)?

由于我必须收集敏感信息,因此我想构建最安全的系统。

【问题讨论】:

  • 由于会话劫持和修改 cookie 的可能性,您应该始终保持谨慎。如果您希望数据安全,切勿以纯文本形式存储任何数据。
  • 正如@Hallur 提到的,总是存在一些漏洞。您可以通过交叉检查您的会话来最小化这种情况,确保您无法应对 XSS 攻击等。请记住,其中许多检查可能会给您的页面加载增加相当大的开销
  • @Hallur 当然我可以让 cookie “不可读”对其进行散列处理,但在这种用户登录的情况下,如果目的是存储将由PHP 脚本?换句话说,如果我可以访问 cookie 并且我“窃取”了它,那么它是否可读都是一样的,因为 PHP 脚本读取它的方式总是一样的,不是吗?
  • 为什么人们总是试图将数据存储在 cookie 中。您从未阅读过任何隐私声明或法律 cookie 通知吗?你应该。
  • “如果我可以访问 cookie 并且我“窃取”了它,那么它是否可读都是一样的,因为 PHP 脚本读取它的方式总是一样的,不是吗? ” - 是的,但这不是问题。如果您只存储了一个未加密的用户 id,那么我就不必窃取您的 cookie - 我只需要知道您的用户 id,然后我可以发送包含该 id 的我自己的 cookie。

标签: php security session cookies


【解决方案1】:

安全变体: 在 Cookie 中存储一个 SESSION ID(32-64 个符号,随机字符串)。

通过 SESSION_ID(存储在 Cookie 中)打开会话存储(存储在服务器上,不可用于用户访问)并使用它(您可以写入会话存储用户 id|token 或其他操作)。

在 PHP 中 - 查看 $_SESSION 和 $_COOKIE

还有一个在 PHP (7+) 中的时刻:php.ini 参数 - session.sid_length(设置会话 id 字符串长度)

【讨论】:

  • 不错的提示,我要试试;虽然我不明白random string 部分
  • 随机字符串 - 具有固定长度和随机符号的字符串。
  • ...为新会话生成随机字符串 - 此字符串将作为会话 ID。
猜你喜欢
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 2013-01-27
  • 2012-01-22
  • 2012-09-05
  • 1970-01-01
  • 2019-10-27
相关资源
最近更新 更多