使简单会员cookie更安全

时间:2011-06-15 11:03:35

标签: asp.net cookies webmatrix

ASP.net Web Pages堆栈附带简单成员资格,其中最好的解释是Matthew Osborn的Using SimpleMembership。 SimpleMembership是一个轻量级的用户/登录/会员系统,它允许cookie用于“记住我”的登录目的。我想通过强制cookie httpOnly并一个安全(仅限https)cookie来提高cookie的安全性。我怎么能这样做?

更新:@ Darin Dimitrov指出httpOnly只是会话,这不是我想要的。

2 个答案:

答案 0 :(得分:1)

如果您不使用持久性cookie,这意味着cookie不再存储在客户端计算机上,这会破坏记住我功能的整个目的。 HttpOnly个cookie存储在浏览器的内存中,但仅限于给定的会话。为了提高安全性,请确保使用secure标志设置cookie,该标志表示此cookie仅通过加密连接传输。

答案 1 :(得分:1)

如果这适用于您,我建议您查看源代码,看看它是如何完成的: http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/9c98c6e9a150#src%2fWebMatrix.WebData%2fWebSecurity.cs

现在我已经检查过了...... :)这就是他们现在的样子:

    public static bool Login(string userName, string password, bool persistCookie = false)
    {
        VerifyProvider();
        bool success = Membership.ValidateUser(userName, password);
        if (success)
        {
            FormsAuthentication.SetAuthCookie(userName, persistCookie);
        }
        return success;
    }

    public static void Logout()
    {
        VerifyProvider();
        FormsAuthentication.SignOut();
    }

其中Membership提供与System.Web.Security.Membersip相同的API - 在启动时实际与WebMatrix.WebData.SimpleMembershipProvider交换。

基本上,如果你想要一个自定义身份验证cookie机制,你必须实现自己的登录&注销逻辑。网络上有很多样本。

我希望这会有所帮助。 祝好运! :)