MVC / ASP.NET中的自定义会话处理

时间:2013-02-26 15:02:29

标签: c# asp.net-mvc security

我正在使用ASP.NET,我使用自己编写的自定义身份验证提供程序,哈希和salting已经到位,因此它应该相对安全。

我还实现了一个自定义身份验证会话机制,就像这样工作。

  1. 用户登录Web应用程序,密码将根据mssql db中的数据进行验证。
  2. 新的行被插入'sessions'表,它包含对登录用户的引用,身份验证令牌和到期日期。
  3. 使用cookie返回身份验证令牌,并存储在客户端的计算机上。
  4. 身份验证令牌用于识别用户。
  5. 它工作得很好,但我不确定这是正确的方法,因为我可以看到潜在的安全风险,例如,如果有人攻击数据库并更改用户ID,或者获取了auth令牌,还是我错了?

    P.S。不幸的是我无法使用内置的auth /会话处理,因为我们的客户要求,加上我们必须支持其他数据库引擎,例如mysql,oracle / etc,所以请不要建议:)

1 个答案:

答案 0 :(得分:1)

我认为几乎安全。

为了减轻您在查看数据库时遭受入侵的所有问题,有一些方法可以解决这个问题。如果您不担心扩展到多个服务器,则可以在应用程序启动时生成密钥。然后使用此键“签署”每个会话。因此,您可以对auth token+server key+expiration之类的哈希进行哈希,然后您可以在会话的每个请求上验证这一点。

至于能够窃取身份验证令牌的人,你在这里只有很多选择。作为参考,这被称为“重放攻击”。如果不让你的网站烦人,就很难防止它们(哦,你想要从这一页打开3个标签,你将不得不登录,因为这是重播)请参阅wikipedia了解更多信息。它在很大程度上取决于你需要的“安全性”。