0

基本的に、基本的なセッション機能を備えたログイン システムがあり、ブラウザを閉じるとタイムアウトします。私はそれについて苦情を受けてきたので、覚えているティックをクリックして、セッションをたとえば30日間持続させたいと思っています。

4

2 に答える 2

2

言ったように、これはクッキーで行うことができます。チュートリアルはたくさんありますが、セキュリティには適切なアプローチが必要です。古くからのソーシャルネットワーキングサイトであるorkutでは、ユーザーがログアウトした場合でも、ユーザーにCookieを盗むスクリプトを実行するように依頼するだけで、アカウントはあなたのものになります。

したがって、これが最善のアプローチです。

  • ユーザーにCookieを作成し、ユーザーIDをソルトでハッシュして、ユーザートークンと呼びます。

  • データベースに、トークンが属するユーザーとその有効期限を含むトークンを保存します。

  • これで、ユーザーがCookieを使用して訪問したときに、ハッシュがデータベースにあるかどうかを確認し、訪問者をログインさせます。

  • ユーザーがログアウトしたら、そのトークンをデータベースから削除するだけです。

詳細情報

于 2012-08-12T02:52:04.500 に答える
-1

たとえば、設定しているときに同時に Cookie を設定$_SESSION['user_id']します。このような :

$token = hash('md5',$_SESSION['user_id'] . time() . 'salt');
setcookie('token', $token, time() + (3600 * 24 * 30));
setcookie('user_id', $_SESSION['user_id'], time() + (3600 * 24 * 30)); // Cookie expires in 30 days

$tokenDB の user_id 行に保存します。

次に$_SESSION['user_id']、Cookie が保存されているユーザーに対して、通常の方法でサインインする必要がないように設定します。

if (!isset($_SESSION['user_id']) {

    if (isset($_COOKIE['user_id']) && isset($_COOKIE['token']) {

       $saved_token = SELECT token FROM users table WHERE userID = $_COOKIE['user_id'];
         if ($_COOKIE['token'] == $saved_token) { 
         $_SESSION['user_id'] = $_COOKIE['user_id'];
       } else log out
       }
}  else log out
}
}

たぶん、それはセキュリティ面でよりうまく機能しますか?

于 2012-08-12T02:34:25.367 に答える