我正在使用一个公共站点,该站点将使用键入会话ID的数据库支持的用户会话。我正在努力防止会话劫持和篡改;我返回客户端的会话数据本身价值有限,但我想防止批发盗窃。我在这里制定了一个小方案,但我想得到一些反馈和批评。
我想我可以看到遭到入侵的请求,以扫描大规模攻击。
非常感谢提前。
答案 0 :(得分:2)
这似乎相对安全,但有几种方法可以规避:
如果会话密钥被盗,哈希也可能被盗。只要合法客户端不做任何事情,劫持者就可以接管并保持密钥/散列/数据的一致性。在合法客户醒来之前,你不会看到任何东西......如果有的话。
在任何情况下,如果您的哈希值不够神秘/安全,那么可以简单地从数据中猜出(也可能被嗅探)。您应该使用某种随机盐(每个会话,每个用户,每个时间帧......)以确保这很难猜到。
答案 1 :(得分:2)
我不明白会话数据哈希是什么意思。它解决了什么问题?
可能导致问题,例如同时在两个标签中加载两个页面时。如果第一个请求更改了会话数据,但另一个请求已经发送,则它将具有不正确的哈希值。
另外,如果你复制旧会话,我不知道你用这个做了什么?
只需拥有一个简单的会话ID即可:
为防止攻击者查看数据,您必须使用SSL。
答案 2 :(得分:0)
听起来不错。
您可能想要投入验证算法的一件事是用户来自的IP地址。
对于当前的用户身份验证可能不是那么好,但是如果会话被泄露,则不同的IP将是一个巨大的标志,但您可以使用该信息添加到IP表规则以阻止潜在的恶意用户。 / p>
另一个想法是跟踪引用网址。关于恶意行为,看看有人来自哪里有任何一致性可能会揭示程序中的漏洞(如果有的话)。
答案 3 :(得分:0)
您无法指望IP地址是唯一的还是不会更改。企业防火墙通常通过NAT转换合并甚至随机更改IP地址。它可以使系统更安全,但它会对尝试需要相同IP地址的服务器身份验证方案造成严重破坏。
在过去的几年中,还有一个问题 - 系统比以前更具移动性。我经常“休眠”我的笔记本而不是关闭它们,但这意味着我来自不同的家庭,工作,星巴克等IP地址。这可以绊倒服务器,会话超时时间短至15-30分钟 - 我需要花费大量时间从办公室到午餐等等。