目前,我通过将会话中的密钥与MySQl数据库中的相同密钥进行匹配来实现真正的用户会话。我使用在每个页面加载时受MD5保护的随机数重新生成会话。我知道会话本身并不安全,我正在寻找可以快速附加到此方法的其他安全选项。
任何想法?
答案 0 :(得分:3)
由于会话数据存储在服务器端,并且会话ID用于将客户端的请求与某个会话相关联,因此它是需要保护的会话ID。保护该会话ID的唯一可行措施是使用TLS / SSL加密客户端和服务器之间的连接。
因此,只要客户端和使用之间的数据传输受到保护,您就可以使用会话。此外,您可以将PHP会话修复为TLS / SSL会话,以便PHP会话仅在该特定TLS / SSL会话中可用。
答案 1 :(得分:0)
您已经跳过了无法增强安全性的环节,并可能会损害您网站的功能。
我通过将会话中的密钥与MySQl数据库中的相同密钥进行匹配来实现真实的[原文如此]用户会话
即使不考虑拼写错误,这也是无稽之谈。您是指通过此方法验证请求吗?如果是这样,它仍然无法帮助您的安全。您已经通过取消引用会话来验证请求。请求是否被授权是完全不同的 - 如果您需要验证用户,那么您应该在会话数据中标记这一点。
这听起来好像是在试图阻止CSRF,但无论您是在验证用户,会话还是请求,都会让这一切变得混乱。
我在每次加载页面时重新生成会话
同样,这是语义上的废话。你不能“重新生成会话”。你的意思是你创建一个新的sessionId?如果是这样,那么当用户尝试打开第二个窗口或使用后退按钮时,您所实现的就是创建错误。它提供的CSRF保护很少。
受MD5保护
仅使用随机加密功能不会使您的应用程序安全。真实数据和代理标识符之间的映射是什么并不重要,它本身不提供对MITM的保护。
要么您在描述当前的安全措施方面做得非常糟糕,要么您编写了大量无用的代码。
去阅读很多Stefan Esser's和/或Chriss Schiflet's内容。