标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-3356] 作者: 影 发表于: [2023-11-03]
本文共 [141] 位读者顶过
1 概要
如果 Web 应用中会话 ID 的生成规则不完善,用户的会话 ID 就有可能被他人成功预测,从而造成会话劫持。为了避免生成可预测的会话 ID 而引入安全隐患,应当停止自己实现会话管理机制,而使用久经考验的编程语言或中间件(PHP、Java/J2EE、ASP.NET 等)提供的会话管理机制。 [出自:jiwo.org] 2 常见的会话ID生成方法
为了预测会话 ID 的生成规则,首先就需要对常见的会话 ID 生成规则有所了解。会话 ID 的生成大多都是基于以下项目。 (1)用户 ID 或邮箱地址 (2)远程 IP 地址 (3)日期与时间(UNIX 时间戳或年月日时分秒的字符串) (4)随机数 生成会话 ID 时,有时会原封不动地使用上述值,有时也会选取几种组合使用,然后再进行加密(十六进制或 Base64)或者散列函数处理。 3 使用推测出的会话 ID 尝试伪装
攻击者推测出会话 ID 之后,就会在对象应用中试用。如果攻击取得成功,会话就会处于有效的状态,因此攻击者能立刻得到攻击是否成功的反馈。 4 伪装造成的影响
攻击者成功伪装成用户后,就能够以用户的权限使用对象应用中的所有功能,如查看重要信息、发布 / 更新 / 删除数据或文章、购物、转账等。 但是,那些浏览前需要再次输入密码的页面,即使伪装成功后也无法访问。因为会话劫持的攻击者并不知道用户的密码。因此,关键处理前要求用户再次输入密码(再认证),是防范会话劫持的辅助性对策。 另一方面,如果更改密码时不需要输入当前密码,攻击者就能够通过更改密码而掌握用户的密码,这时攻击将造成更大的危害。 |