php - 另一个角度的 session 劫持

标签 php security

我一直在研究一套安全的登录/门户类型的工具,通用代码没有 SQL 注入(inject)、XSS 等,我有很多东西可以阻止 session 劫持。

  1. 为每个页面重新生成 session ID
  2. 将用户的IP与登录时的IP进行比较
  3. 将用户的 user_agent 与登录时的代理进行比较
  4. session 超时时间短

等等

我已尽我所能阻止劫持,但我仍然找到了可能发生劫持的情况,并想知道是否有人有任何想法。

想象这样一种情况,您有 2 个用户在执行 SNAT/DNAT 的防火墙后面,所以他们都来自同一个 IP。它们都是由同一个地方提供的相同机器。一个连接到站点并登录,另一个复制 PHPSESSID cookie 并可以简单地窃取 session 。

这可能听起来像是一个极端的例子,但这与我的工作场所非常相似,每个人都在防火墙后面所以看起来是同一个 IP,并且所有机器都由 IT 团队管理/提供,所以所有人都有相同版本的浏览器、操作系统等。

我正在尝试考虑另一种方式(服务器端)来阻止劫持或进一步减少劫持,我正在考虑将 token 嵌入到每个 URL(针对每个页面进行更改)并进行检查。

我正在寻找想法或建议,如果你想提供代码或示例,欢迎你,但我更感兴趣的是开箱即​​用的想法或对我的代币想法的评论。

最佳答案

强制一切都使用 HTTPS。

我认为您指的是网络中的用户嗅探 cookie 的被动攻击。为此,您不需要 HTTPS。当双方确定他们正在与谁交谈时,有几个选项就足够了(例如,您可以先进行 DH 交换,服务器将加密客户端将在下一个请求中使用的 token ......),但事实并非如此沿着这条路走下去是值得的。

如果用户最初输入的是非 https 地址,主动攻击仍然是可能的,但在这种情况下您无能为力。将来,一旦用户通过 HTTP strict transport security. 与您的网站建立了一个纯粹的连接,您就可以阻止此类攻击。 .

关于php - 另一个角度的 session 劫持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592763/

相关文章:

php - js如何将文件从一个文件夹复制到另一个文件夹

javascript - 如何在ajax请求中传递空白数组?

java - 使用AccessController限制权限

asp.net - 我想通过代码将我的 FormsAuthentication cookie 设置为超时

php - WordPress,禁用部分 Roots 主题(如 Bootstrap)

php - 如何检索旧的 Whatsapp 个人资料图片?

security - 对加密数据进行全文搜索

algorithm - 在散列算法之上使用另一种算法

windows - 是否有生成 SDDL(安全描述符定义语言)字符串的工具?

php - SQL JOIN 问题不从查询中返回用户详细信息并将它们打印在数组中