0

ユーザーのユーザー名パスワードを Cookie に保存することは良い方法ですか? ( Facebook、digg、twitterなどの) 大きな Web サイトがこれをどのように処理しているか知りたいです。私のコードはそのようなものです:

<?php

$username = mysql_real_escape_string($_POST['username']);
$password = md5($_POST['password']);

?>

ログインが成功するたびに、$username$password(md5) を Cookie に保存します。そして、セッションIDを再生成しますsession_regenerate_id()


ユーザーを認証するために、ログインセッションが存在するかどうかを確認し、そうでない場合はCookieを認証します。

何か案は?ありがとう

4

4 に答える 4

2

私は少し混乱しています – PHP セッションまたは Cookie を使用していますか?

セッション($_SESSION['username'] = 'Tom'などでデータを保存する場合、そのデータはユーザー Cookie に保存されません。

別の Cookie にデータを保存する場合 (自動ログインなどの場合)、代わりに別のランダム ID を保存し、ユーザー ID をデータベース テーブルで検索することをお勧めします。

autologins
----------
key (random hash)
user_id
expires
于 2010-01-02T12:55:52.620 に答える
0

md5 だけでは十分ではありません。少なくとも、データベースに保存するランダムな「ソルト」(小さなランダムな文字列) を含める必要があります。

編集:ところで、パスワードをプレーンテキストまたは暗号化して保存しましたか?これは、より大きなセキュリティ リスクになる可能性があります。

于 2010-01-02T12:37:39.297 に答える
0

標準的な方法は、ユーザー自身または PHP セッションを使用して、Cookie でセッション ID をユーザーに与えることです。一部のサイトでは、ユーザー名とパスワードのハッシュを Cookie に保存することを今でも行っていますが、私は前者を好みます。これにより、ユーザーは自分のログインをより詳細に制御できるようになるため、ユーザーは自分が持っているセッションの数や、どの IP からのものかを確認できます。たとえば、GMail の例を参照してください。

ソルトとハッシングに関しては、ソルト化されたデータベースにパスワード ハッシュを保存する必要があります。理想的には、ソルトはユーザーごとに異なる必要があります。データベースが盗まれたり公開されたりした場合、これにより、攻撃者がパスワードを取得することが非常に難しくなります (攻撃者全員が同じソルトを使用した場合、そのソルトのレインボー テーブルを生成できます。これには長い時間がかかりますが、その後、パスワードを非常に迅速に破ります)。セキュリティのために、ソルトには %$&^ などの英数字以外の文字も含める必要があります。

于 2010-01-02T13:00:26.370 に答える
0

Joel Lの答えは良いものです。追加する唯一のことは、ランダム ID の代わりに、ユーザーを識別する情報を追加して、より安全にすることができるということです。

たとえば、ユーザーの IP アドレスのハッシュとソルトを使用すると、誰かがユーザーのセキュリティ cookie を盗んだり盗んだりすることに対するセキュリティが強化されます。

TWitter はこのようなものを使用していると思われます。そのため、一度に 1 台のコンピューターからのみ Twitter に永続的にログインできます。

于 2010-04-18T22:02:28.387 に答える