0

したがって、私の Web サイトは 30 分後にセッションを破棄するように設定されており、ユーザーの記憶オプションを追加したいと考えています。

基本的にはこのように動作します。疑似コードについてはご容赦ください。

setcookie("sitename[id]", $userid, time()+60*60*24*30);
setcookie("sitename[pass]", $hasedandsaltedpassword);
setcookie("sitename[username]", $username);

したがって、ユーザーが自動ログアウトされると、Cookie の使いやすさをチェックします

$count = $dbh->prepare("SELECT id FROM users WHERE name = :name AND id = :id AND pass = :pass");
    $count->bindParam(":name", $_COOKIE["sitename"]["username"]);
    $count->bindParam(":id", $_COOKIE["sitename"]["id"]);
    $count->bindParam(":pass", $_COOKIE["sitename"]["pass"]);
    $count->execute();
    $count = $count->rowCount();

行数が 0 を超えているが 1 を超えていない場合は、新しいセッション変数を設定します。

4

2 に答える 2

1

それは機能しますが、特に安全ではありません。事前にハッシュされたパスワードをDBと比較しているだけなので、パスワードは変更されないため、基本的に、Cookieにアクセスできる人は誰でも、Cookieデータを変更するだけでいつでもログインできるようになります。

DBに別のテーブルを追加する(または現在のユーザーテーブルを拡張する)ことをお勧めします. 「記憶」されていたコンピューターと、その記憶がいつ期限切れになるかのフィールド。これにより、1) 必要に応じて早期にログインを期限切れにする、2) Cookie が拡張されていないことを検証する、という 2 つの追加の操作を行うことができます。それでも、技術的には「安全」ではありませんが、はるかに近くなります。

于 2012-07-19T06:04:58.883 に答える
0

それだけです...しかし、次のことを確認する必要があります->ユーザーがremember meを選択した場合は、この条件を確認するだけで済みます->正常にログアウトされた場合は、再度確認する必要はありません

于 2012-07-19T05:52:52.457 に答える