0

目前,我的网站在用户进入数据库的条目旁边存储一个会话 ID 和一个 IP 地址,然后将其存储在 cookie 中。如果每个页面上的会话 ID 和 IP 地址匹配,那么我们授予他们访问权限。这看起来不错,但我们希望允许人们通过多个 IP 地址/多个会话登录网站。

所以我只是想知道最好和最安全的方法是什么?我们只是将用户名和密码存储在 Session 中,我们是在 Session 中存储用户名和哈希密码,还是仅将唯一 ID 存储在数据库的新“会话”表中,用户 ID 旁边是它?那么我们只是将Session ID存储在Cookie中吗?

我不确定会话篡改是否是一件事,但我通常认为精英可能会这样做,所以我尽量保证安全。我知道编辑 Cookie 也很简单。

该网站在后台使用 Web 服务。当用户输入他们的登录详细信息时,他们会被发送到服务并检查,然后返回是或否。原因是服务被不同平台的多个应用程序使用。所以基本/简单会员模型在这里不会真正起作用。

4

2 回答 2

1

我设法通过以下指南完成了这项工作:http: //www.codeproject.com/Articles/13032/Custom-MembershipProvider-and-RoleProvider-Impleme 和这里​​: http: //logcorner.wordpress.com/2013/08 /28/how-to-configure-custom-membership-provider-using-asp-net-mvc4-with-external-login-like-facebook-yahoo-google-or-other-relying-party-accounts-2/

我设法通过覆盖客户会员所需的方法并让他们检查我们的服务并做出相应的响应,从而使其与我们的服务一起使用。它工作得很好。

例子

    public override bool ValidateUser(string username, string password)
    {
        MyUser newUser = new MyUser 
        {
            EMail = username,
            Password = password
        };

        try
        {
            MyUser user = MyService.Authenticate(newUser);
            if (user.EMail != null && user.IsActivated)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (Exception e)
        {
            return false;
        }

    }

它还提供了使用 MembershipCreateStatus 注册新用户的能力。这让我真正详细说明了为什么某些事情会失败,而不是像以前那样抛出错误。感谢您为我指明正确的方向神秘人。

于 2013-10-16T08:28:35.423 回答
0

如果每个页面上的会话 ID 和 IP 地址匹配,那么我们授予他们访问权限。

您是否考虑过IP 地址远非安全。此外,它们有可能在单个会话中合法地更改。

听起来你已经推出了自己的安全性,如果你在这方面有很好的经验,那就没问题了。

我建议您查看 MVC 开箱即用的安全性,例如查看oauth。它应该有你需要的东西。

于 2013-10-07T14:59:20.780 回答