我目前正在考虑我的一个Web应用程序,我希望提供一些有关提高安全性的建议.
我会注意到该应用程序在ASP.net中,当前的实现阻止我使用集成身份验证.这也绝不是一个需要高安全性的应用程序,我只是喜欢我的基础.
在过去,我已经存储了id和令牌.令牌是用户ID的哈希值+用户的Salt(重用auth信息中的值)当用户访问站点时,将根据令牌检查ID并相应地进行刷新.
我觉得这里有个大洞.从理论上讲,如果有人掌握了盐值,他们需要做的就是猜测哈希算法并迭代可能的ID,直到他们进入.我不认为这会发生,但它似乎仍然是一个错误.
有关如何正确确认用户cookie未被更改的任何建议?
sip*_*wiz 13
大多数网站的做法是验证使用,如果成功,他们会向浏览器发送cookie以存储和发送任何后续请求.如果攻击者能够获得令牌(在它过期之前),他们将能够模拟用户.
因此,cookie和身份验证过程应始终通过https会话执行.攻击者必须抓住cookie的唯一方法是在终端用户的计算机上拦截它,如果他们能够这样做,他们可能会安装一个击键记录器并获得用户的密码.
至于使用什么类型的令牌并不重要,只要它的伪随机性足以让攻击者猜测计算成本高昂.我自己使用GUID.如果你需要cookie中的额外信息,除了一个sessionid,你可以附加一个GUID,然后可能哈希或加密它只是为了腰带和括号方法.
最好的方法是将会话 ID 存储为 cookie 值。
每当用户登录时,您都会在数据库或其他会话存储中创建一条记录,并使用随机会话 ID。将 ID 放入 cookie。当您稍后看到 cookie 时,您可以从数据库中检索所有用户信息。
这种方法有以下优点,
如果这对您不起作用,请尝试加密。哈希将是我最后的选择。哈希本身是无用的。您必须将用户 ID 和其他信息清楚地存储在不同的 cookie 中。你最终暴露了用户信息。