gpt4 book ai didi

php - PHP session 有多安全?

转载 作者:IT王子 更新时间:2023-10-29 01:18:20 25 4
gpt4 key购买 nike

我主要是一名 C++ 程序员,但我正在尝试学习一些 PHP。

显然,实现网络用户 session 的方法是使用 $_SESSION 变量将用户的登录 ID 存储在 cookie 中。

难道某人不能只修改他们的 cookie,给他们不同的权限或以不同的用户身份登录吗?

似乎这种身份验证机制只是让用户将他们的 ID 存储在一个文件中 - 然后相信他们不会更改它。

有什么东西可以阻止这种情况吗?

谢谢!

最佳答案

PHP session 只有在您的应用程序创建它们时才是安全的。 PHP session 将为用户提供一个伪随机字符串(“ session ID”)以供用户识别,但如果该字符串被攻击者拦截,则攻击者可以伪装成该用户。

做什么

此信息取自"Session Management Basics" in the PHP manual ,但简化了一点。有些东西可能被遗漏了。请务必通读一遍。

  1. Always use HTTPS

    • 防止攻击者读取 session ID cookie
  2. 启用session.use_strict_mode :

  3. 启用session.use_only_cookies并禁用 session.use_trans_sid

    • 通过共享其中包含 session ID 的 URL,避免用户意外共享 session ID
    • 防止 session ID 出现在 Referer header 中
  4. 定期 regenerate the session IDinvalidate old session IDs shortly after regenerating

    • 如果攻击者使用其他用户的 session ID,则重新生成将使用户或攻击者的 session 无效,具体取决于发出重新生成 ID 请求的一方。然后,您可以跟踪何时有人尝试使用已经重新生成的 session ,并在此时使重新生成的 session 无效。用户将能够登录,但攻击者(希望如此)将无法登录。
  5. 可选地跟踪与请求相关的 $_SESSION 中的附加信息(IP 地址、用户代理字符串等)

    • 如果攻击者以某种方式获得对 session ID 的访问权限,这可能会在攻击者访问任何数据之前检测到入侵。但是,请记住,这可能会恶化用户体验。例如,当用户从移动网络切换到 Wi-Fi 时,IP 地址可能会发生变化,当浏览器自动更新时,用户代理字符串可能会发生变化。根据您的网站愿意处理的权衡调整检查的数据。

关于php - PHP session 有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10165424/

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