【问题标题】:How to securely verify user requests如何安全地验证用户请求
【发布时间】:2014-08-09 17:43:58
【问题描述】:

我正在构建一个基本网站,其中登录用户向服务器发出请求。服务器验证用户是他所说的那个人的一些好的做法是什么?现在我每次用户登录时都会创建一个会话密钥,然后将其存储在数据库中。会话密钥是用户名与当前时间连接的哈希值。每次用户提出请求时,他都会发送会话密钥以进行验证。这种方法是否存在安全漏洞?

【问题讨论】:

  • 搜索“会话劫持”。
  • 这可能更适合security.stackexchange.com

标签: security web


【解决方案1】:

是的,这不是真正的安全。它被称为Security by Obscurity

如果攻击者想要劫持会话,他们所要做的就是对用户名和时间进行哈希处理,并将其设置为他们的 cookie 值。当然,这必须与当时登录的有效用户会话相对应,但他们可以轻松编写脚本。

例如,如果他们想以bob@example.com 登录,则可以简单地生成bob@example.com:00:00:00bob@example.com:00:00:01bob@example.com:00:00:02 等的哈希值,直到他们找到允许他们访问的会话值特权页面。

【讨论】:

  • 是的,但是攻击者不会不知道我使用的是用户名和当前时间的哈希值吗?理论上我可以使用任何字符串。
  • @Nate Security by Obscurity 并不是真正的安全 - 它类似于将门钥匙藏在花盆下面,因为没人知道它在那里。即使攻击者知道机制和算法,安全系统也必须经得起审查并保持安全。如果您的系统开源,或者攻击者设法访问您的源代码(他们可能自己购买了您的系统,其他地方可能存在源泄露漏洞)或有人在互联网上发布它是如何工作的(例如这里问题)- 您的整个安全模型一举被取消。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多