标签: remember-me

为网站实现"记住我"的最佳方法是什么?

我希望我的网站有一个用户可以点击的复选框,这样他们每次访问我的网站时都不必登录.我知道我需要在他们的计算机上存储一个cookie来实现它,但该cookie中应包含哪些内容?

此外,是否存在常见错误,需要注意保持此cookie不会出现安全漏洞,这可以避免,同时仍然提供"记住我"功能?

security cookies remember-me

499
推荐指数
4
解决办法
27万
查看次数

"让我登录" - 最好的方法

我的Web应用程序使用会话在用户登录后存储有关用户的信息,并在应用程序中从一个页面移动到另一个页面时维护该信息.在这个特定的应用程序,我存储user_id,first_namelast_name人的.

我想在登录时提供"Keep Me Logged In"选项,这将在用户的计算机上放置一个cookie两周,这将在他们返回应用程序时以相同的细节重新启动他们的会话.

这样做的最佳方法是什么?我不想将它们存储user_id在cookie中,因为看起来这样可以让一个用户轻松尝试伪造另一个用户的身份.

php security session remember-me

245
推荐指数
7
解决办法
14万
查看次数

将密码存储在cookie中是否安全?

我的Web应用程序的主页上有一个RememberMe复选框.如果用户检查它,我将在cookie中存储电子邮件ID和密码.这是我的代码:

if (this.ChkRememberme != null && this.ChkRememberme.Checked == true)
   {
     HttpCookie cookie = new HttpCookie(TxtUserName.Text, TxtPassword.Text);
     cookie.Expires.AddYears(1);
     Response.Cookies.Add(cookie);
   }
Run Code Online (Sandbox Code Playgroud)

我想知道的是:

  • 将密码存储在cookie中是否安全?
  • 这样做的正确方法是什么?
  • 为cookie设定时间的最佳做法是什么?

c# asp.net passwords asp.net-mvc remember-me

59
推荐指数
4
解决办法
3万
查看次数

什么加密算法最适合加密cookie?

由于这个问题相当受欢迎,我认为给它更新很有用.

让我强调AviD给出的正确答案:

您不应该在cookie中存储任何需要加密的数据.相反,在cookie中存储一个大小合适的(128位/ 16字节)随机密钥,并将您想要保密的信息存储在服务器上,由cookie的密钥标识.



我正在寻找有关加密cookie的"最佳"加密算法的信息.

我有以下要求:

  • 必须快速
    加密和解密数据(几乎)每个请求都要完成

  • 它将在小数据集上运行,通常是大约100个字符或更少的字符串

  • 它必须是安全的,但它不像我们正在保证银行交易

  • 我们需要能够解密信息,以便SHA1等出来.

现在我已经读过Blowfish快速而安全,我读过AES快速而安全.Blowfish的块大小较小.

我认为这两种算法都提供了足够的安全性?所以速度将成为决定性因素.但我真的不知道这些算法是否适合小字符串,以及是否有更适合加密cookie的算法.

所以我的问题是:
什么加密算法最适合加密cookie数据?

更新
更准确地说,我们要加密2个cookie:一个包含会话信息,另一个包含"记住我"信息.

该平台是PHP上作为VPS上的Linux上的apache模块.

更新2
我同意cletus,将任何信息存储在cookie中是不安全的.

但是,我们需要实现"记住我"功能.可接受的方法是设置cookie.如果客户端提供此cookie,则允许他或她以(几乎)相同的权限访问系统,就像他/她提供有效的用户名密码组合一样.

因此,我们至少要加密cookie中的所有数据,以便:
a)恶意用户无法读取其内容;
b)恶意用户无法制作自己的cookie或篡改它.

(在我们对它做任何事情之前,对所有来自cookie的数据进行消毒并检查其有效性,但这是另一个故事)

会话cookie不再包含sessionId/timestamp.它可以在没有加密的情况下使用,但我认为加密它没什么害处?(计算时间除外).

因此,鉴于我们必须在cookie中存储一些数据,加密它的最佳方法是什么?

更新3
对此问题的回答使我重新考虑所选择的方法.我确实可以做同样的事情而不需要加密.我不应该加密数据,而应该只发送没有上下文而无法猜到的数据.

然而,我也不知所措:
我认为加密使我们能够将数据发送到BigBadWorld™,并且仍然(相当)确定没有人可以阅读或篡改它......
不是全部加密点?

但下面的反应推动:不要相信加密来实现安全性.

我错过了什么?

php security encryption cookies remember-me

48
推荐指数
4
解决办法
4万
查看次数

"在这台电脑上记住我" - 它应该如何运作?

查看Gmail的Cookie,很容易看到存储在"记住我"cookie中的内容.用户名/一次访问令牌.在用户名是秘密的情况下,它可以以不同的方式实现.但无论如何......事情的安全性不是很高:你偷走了饼干而你已经准备好了.

我的问题是在功能方面,但是你什么时候擦拭他们的访问权限?如果用户登录而未在另一台计算机上单击"记住我",是否应该在所有计算机上使其访问权限无效?我问的是传统上如何实现它,以及它应该如何实现.

security password-protection remember-me

48
推荐指数
3
解决办法
3万
查看次数

PHP登录系统:记住我(持久性cookie)

我想在登录前添加"记住我"复选框选项.

在用户的浏览器中安全存储cookie的最佳方法是什么?

例如,Facebook有"记住我"复选框,这样每次进入facebook.com时您都已登录.

我当前的登录使用简单的会话.

php authentication cookies remember-me

40
推荐指数
2
解决办法
4万
查看次数

Django"记住我",内置登录视图和身份验证表单

我怎样才能重新使用原来的管理员登录()和AuthenticationForm设置较长的Cookie有效期与"记住我"选项,在登录页面检查用户?我目前正在通过urls.py使用内置登录

url(r'^login/$','django.contrib.auth.views.login', {'template_name': 'authentication/login.html'}, name='login'),
Run Code Online (Sandbox Code Playgroud)

该复选框在我的login.html中实现为:

<label><input name="remember_me" type="checkbox">Keep me logged in</label>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何通过AuthenticationForm传递信息给django.contrib.auth.views.login

目前,如果用户未选中"记住我"框,则会在settings.py中定义cookie年龄

SESSION_COOKIE_AGE = 360
Run Code Online (Sandbox Code Playgroud)

我发现了几个类似的问题,但我认为这不需要安装单独的应用程序.下面的代码片段(http://djangosnippets.org/snippets/1881/)看起来很有希望,但我只编写了几个月的python和Django,但是我无法让它工作:

def login(request, *args, **kwargs):
    if request.method == 'POST':
        if not request.POST.get('remember_me', None):
            request.session.set_expiry(0)
    return auth_views.login(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

django checkbox login remember-me

37
推荐指数
1
解决办法
2万
查看次数

在ASP.NET MVC中实现"记住我"功能

我正在尝试在登录表单中实现"记住我"功能.我使用ASP.NET MVC作为我的Web应用程序.我设法让cookie的东西工作,但我没有自动登录用户,以防他/她之前检查记住我复选框.我知道问题是什么,但我不知道如何解决它.

在我的HomeController中,我有以下内容:

private LoginViewModel CheckLoginCookie()
{
    if (!string.IsNullOrEmpty(_appCookies.Email) && !string.IsNullOrEmpty(_appCookies.Password))
    {
        var login = new LoginViewModel
                        {
                            Email = _appCookies.Email,
                            Password = _appCookies.Password
                        };

        return login;
    }
    return null;
}


public ActionResult Index()
{
    var login = CheckLoginCookie();
    if (login != null)
        return RedirectToAction("Login", "User", login);

    var viewModel = new HomeIndexViewModel
                        {
                            IntroText =
                                "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-routing remember-me asp.net-mvc-3

23
推荐指数
1
解决办法
6万
查看次数

登录页面上"记住我"功能的含义是什么?

我想在登录页面上包含"记住我"功能,但我不知道它的实际含义(它的工作原理).我在许多网站上看到了不同的用途,但我没有得到它的实际意义.

security cookies login remember-me session-cookies

23
推荐指数
2
解决办法
3万
查看次数

在Spring 3.1中使用remember-me功能登录用户

我目前以编程方式(例如,当他们通过Facebook或其他方式登录而不是使用我的登录表单)登录用户时:

SecurityContextHolder.getContext().setAuthentication(
  new UsernamePasswordAuthenticationToken(user, "", authorities)
);
Run Code Online (Sandbox Code Playgroud)

我想要做的是将用户登录,就好像他们在登录表单中设置了remember-me选项一样.所以我猜我需要使用RememberMeAuthenticationToken而不是UsernamePasswordAuthenticationToken?但是,我为key构造函数的参数添加了什么?

RememberMeAuthenticationToken(String key, Object principal, Collection<? extends GrantedAuthority> authorities) 
Run Code Online (Sandbox Code Playgroud)

更新:我正在使用此处描述持久令牌方法.因此,基于简单哈希的令牌方法中没有关键字.

security spring spring-mvc spring-security remember-me

17
推荐指数
1
解决办法
9259
查看次数