我正在使用ASP.NET,我使用自己编写的自定义身份验证提供程序,哈希和salting已经到位,因此它应该相对安全。
我还实现了一个自定义身份验证会话机制,就像这样工作。
它工作得很好,但我不确定这是正确的方法,因为我可以看到潜在的安全风险,例如,如果有人攻击数据库并更改用户ID,或者获取了auth令牌,还是我错了?
P.S。不幸的是我无法使用内置的auth /会话处理,因为我们的客户要求,加上我们必须支持其他数据库引擎,例如mysql,oracle / etc,所以请不要建议:)
答案 0 :(得分:1)
我认为几乎安全。
为了减轻您在查看数据库时遭受入侵的所有问题,有一些方法可以解决这个问题。如果您不担心扩展到多个服务器,则可以在应用程序启动时生成密钥。然后使用此键“签署”每个会话。因此,您可以对auth token+server key+expiration
之类的哈希进行哈希,然后您可以在会话的每个请求上验证这一点。
至于能够窃取身份验证令牌的人,你在这里只有很多选择。作为参考,这被称为“重放攻击”。如果不让你的网站烦人,就很难防止它们(哦,你想要从这一页打开3个标签,你将不得不登录,因为这是重播)请参阅wikipedia了解更多信息。它在很大程度上取决于你需要的“安全性”。