标签: remember-me

散列"记住我"cookie令牌的最佳方法

我正在尝试按照此处提供的指南实现" 记住我 "功能:基于表单的网站身份验证的权威指南,此处:http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

看来,"cookie令牌"应该在存储在数据库中时进行哈希处理(如果攻击者可以访问数据库,则未使用的令牌看起来像普通的登录/密码,允许登录网站).

寻找一个好的哈希算法,我发现这个推荐的技术使用bcrypt:https://stackoverflow.com/a/6337021/488666

我已经尝试过,发现随着建议的轮数(15)导致处理时间非常慢(在2,3或者英特尔2核E500 + 4 GB RAM上验证2,3s)

我知道哈希算法应该相对缓慢阻碍攻击者,但在这个层面上,它阻碍了用户使用网站:)

你认为减少轮数(例如7,将处理时间减少到10ms + 10ms)就足够了吗?

php cookies hash bcrypt remember-me

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

第8章Rails教程记住令牌错误

本章介绍添加记忆令牌以确保记住用户登录状态,并且仅在用户明确注销时才清除会话.我理解在我的应用中使用此功能的重要性,因此要确保它正常工作.当我跑步的时候,我遇到了一堆错误

$ bundle exec rspec spec/
Run Code Online (Sandbox Code Playgroud)

我怀疑它们与我的用户模型有关,因为它们除了一个包含:

NoMethodError:
       undefined method `remember_token=' for #<User:...>
Run Code Online (Sandbox Code Playgroud)

而最后一个包含

Failure/Error: it { should respond_to(:remember_token) }
Run Code Online (Sandbox Code Playgroud)

然后指向我的user_spec.rb,user.rb和authentication_pages_spec.rb文件,我在这里列出了大部分(相关部分).

user.rb:

# == Schema Information
#
# Table name: users
#
#  id         :integer         not null, primary key
#  name       :string(255)
#  email      :string(255)
#  created_at :datetime        not null
#  updated_at :datetime        not null
#

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation
  has_secure_password

  before_save { |user| user.email = email.downcase }
  before_save :create_remember_token

  validates :name, presence: true, length: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails remember-me

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

实现在多个设备上使用令牌和系列记住我

我正在尝试使用此处概述的系统实现"记住我"实用程序:改进的持久登录cookie

然而,这里的逻辑存在问题,并且想知道是否有人可以为我清除这一点.

  • 为用户提供会话ID.这是一个随机生成的字符串,在用户帐户的生命周期内是持久的.

  • 为用户提供令牌ID.这是一个随机生成的字符串,每次用户成功登录时都会重新创建.

这两个值都作为签名cookie存储在用户的计算机和数据库中.

这个想法是,如果有人设法欺骗用户的令牌和系列并以用户身份登录,那么他们将生成新的令牌ID.合法用户下次尝试登录时,他们将具有匹配的系列但是无效令牌,从而通知系统发生了安全漏洞并且可以采取任何必要的操作(清除用户的令牌).

这很棒.但是,当用户尝试从多个设备或浏览器使用我的应用程序时会发生什么?假设用户使用Chrome登录我的服务并检查记住我.下次他们通过Firefox登录并选择记住我.将生成一个新令牌,以便下次用户尝试使用Chrome登录时会触发虚假盗窃 - 不是吗?

如果是这种情况,我该如何更可靠地实施此解决方案?我很清楚基于cookie的授权本质上不太安全,并且不允许cookie授权用户执行任何破坏性操作,例如购买.

security authentication cookies session remember-me

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

Zend Framework rememberMe()似乎不记得我

我的会话似乎只在当前窗口/选项卡中有效.它似乎也很快超时.继承人我目前正在尝试这样做:

这是在我的登录控制器中:

$adapter = $this->getAuthAdapter($data);
$auth    = Zend_Auth::getInstance();
$result  = $auth->authenticate($adapter);

if (!$result->isValid()) {
    $this->view->err = "Invalid username or password.<br/>Please try again.";
    return $this->render('index'); // re-render the login form
}

Zend_Session::rememberMe(60*60*24*7*4);
Run Code Online (Sandbox Code Playgroud)

这是在我的引导程序中:

Zend_Session::start();
Run Code Online (Sandbox Code Playgroud)

我对这些东西比较新,所以请耐心等待!任何帮助将不胜感激.

authentication session zend-framework remember-me

5
推荐指数
1
解决办法
5586
查看次数

Spring Security 中记住我服务的问题

我正在尝试使用 Spring 在我的网站中实现“记住我”功能。persistent_logins 表中的 cookie 和条目正在正确创建。此外,当用户名显示在页面顶部时,我可以看到正在恢复正确的用户。

但是,一旦我尝试访问该用户在“记住”之后返回时的任何信息,我就会收到 NullPointerException。看起来好像用户没有再次被设置在会话中。

我的 applicationContext-security.xml 包含以下内容:

<remember-me data-source-ref="dataSource" user-service-ref="userService"/>

...

<authentication-provider user-service-ref="userService" />

<jdbc-user-service id="userService" data-source-ref="dataSource" 
role-prefix="ROLE_"
users-by-username-query="select email as username, password, 1 as ENABLED from user where email=?" 
authorities-by-username-query="select user.id as id, upper(role.name) as authority from user, role, users_roles where users_roles.user_fk=id and users_roles.role_fk=role.name and user.email=?"/>
Run Code Online (Sandbox Code Playgroud)

我认为这可能与按用户名查询用户有关,但如果此查询不正确,登录肯定无法正常工作?

对此的任何帮助将不胜感激。

谢谢,齿轮。

spring-security remember-me

5
推荐指数
1
解决办法
3364
查看次数

asp.net"记住我"的cookie

我已经在我的asp.net webform中实现了记住我的选项,使用它,

protected void LBtnSubmit_Click(object sender, EventArgs e)
 {
  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)

我是以正确的方式做到的吗?任何建议..我正在使用Windows身份验证,我not using asp.net membership...

asp.net cookies remember-me

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

如何以编程方式注销Spring Security Persistent Token Based RememberMe Services

我在我的项目中使用Spring Data REST和Spring Security.AM使用基于持久令牌的记住我的Spring安全服务来记住登录用户,我试图使会话无效并以编程方式从存储库和cookie中删除数据.我已经尝试了以下代码,但只为该请求工作,如果再次提出另一个请求,则再次进行身份验证.如何在会话无效后从数据库和浏览器中删除cookie.

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null){    
    new SecurityContextLogoutHandler().logout(request, response, auth);
    new PersistentTokenBasedRememberMeServices().logout(request, response, auth);
}
SecurityContextHolder.getContext().setAuthentication(null);
Run Code Online (Sandbox Code Playgroud)

是否可以使用Spring Security的PersistentTokenBasedRememberme服务使会话无效并删除?还有什么我必须用来删除cookie或其他?

cookies spring-security remember-me

5
推荐指数
1
解决办法
945
查看次数

Devise + Omniauth + Remember_me

对于如何记住我与 Omniauth 的合作似乎有些混乱。

根据此wiki,您需要在 OmniauthCallbacksController 中包含以下内容:

remember_me(user)
Run Code Online (Sandbox Code Playgroud)

另一方面,根据这个问题,你只需要这样做:

user.remember_me = true
Run Code Online (Sandbox Code Playgroud)

另外,根据this使remember_me默认为true ,你只需要将以下内容添加到你的User.rb中

def remember_me
  true
end
Run Code Online (Sandbox Code Playgroud)

不确定哪一个是官方答案,这三个都不适合我。它仅适用于 Mac 上的 Chrome,但不适用于 Firefox Mac 和 Chrome Windows。不知道发生了什么事。

我的代码如下所示:

# -*- encoding : utf-8 -*-
class OmniauthCallbacksController < Devise::OmniauthCallbacksController

    include Devise::Controllers::Rememberable

    def all
        omniauth = request.env["omniauth.auth"]
        auth = Authentication.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])
        if auth

            auth.update_with_omniauth omniauth
            auth.save!

            # ???
            remember_me auth.user
            auth.user.remember_me = true

            if user_signed_in?
                redirect_back_or settings_path(current_user)
            else
                sign_in_and_redirect auth.user, event: :authentication
            end
        else
            if user_signed_in?
                current_user.build_auth(omniauth).save! …
Run Code Online (Sandbox Code Playgroud)

remember-me devise omniauth

5
推荐指数
1
解决办法
1637
查看次数

如何让Android webview记住用户名和密码?

这里是 Android Studio 中的代码。我还在 Android Studio 代码下方添加了 html 代码,使用 javascript 来记住 cookie 中的用户名和密码。它仅适用于某些 Android 设备。我不知道为什么。我想让它适用于所有 Android 设备。希望这将是一个简单的方法。请帮忙。我希望用户输入一次用户名/密码,下次访问时应填写该用户名/密码。

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Go To Our Facebook Page");

        WebView myWebView = (WebView) findViewById(R.id.webview);
        myWebView.setWebViewClient(new WebViewClient());
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.loadUrl("http://www.hksalonjob.comslogin.php");

    }
Run Code Online (Sandbox Code Playgroud)

这里有html代码,使用javascript来记住用户名和密码。

    <!DOCTYPE HTML>

    <html>
        <head>
            <title>Salon Job HK</title>
            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
            <meta name="description" content="" />
            <meta name="keywords" content="" />
            <!--[if …
Run Code Online (Sandbox Code Playgroud)

android webview remember-me

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

如何在Spring-Security中重命名表persistent_logins

在Spring Security中管理“记住我”身份验证的默认表名称为“ persistent_logins”。

由于数据库命名约定,我需要将此表“ persistent_logins ” 重命名为“ T_PERSISTENT_LOGINS” ”。

请帮忙。

security authentication spring remember-me

5
推荐指数
1
解决办法
861
查看次数