我正在提高Web应用程序中用户会话的安全性,但是我遇到了麻烦。我的安全性改进列表中的一些项目会导致用户不时重新登录。这是我的列表,其中被广泛接受和使用?您使用哪种?
还有其他吗?我的应用程序不处理过于敏感的数据,但应在某种程度上受到保护。
答案 0 :(得分:1)
检查HTTP_USER_AGENT(某些浏览器,如IE和移动设备浏览器会在单个会话期间不时更改它)
鉴于HTTP_USER_AGENT由攻击者控制,您无法信任它,但您可以将其用作信号来检测用户何时合法登录并且模仿者已登录IP地址是一个类似的信号。您可能希望查看此类信号并选择对它们进行加权,以便获得可容忍的假阴性水平。
每个用户ID只允许一个会话
根据您的意思,它可能不是绝对必要的,但是如果您打算
在每次请求后重新生成会话ID
然后,您需要在分配新ID时使旧ID无效,以避免类1 session fixation漏洞:“Web应用程序在不首先使现有会话ID无效的情况下对用户进行身份验证,从而继续使用会话ID已与用户关联。“
生成ID时,请确保不允许不受信任的输入限制您可能生成的会话ID,并确保您的会话ID不可预测。否则,您很容易受到类型2会话固定攻击:“攻击者能够强制用户使用已知的会话ID,这样,一旦用户进行身份验证,攻击者就可以访问经过身份验证的会话。”
有关处理会话的其他安全提示,请参阅https://www.owasp.org/index.php/Session_Management。