クッキーを使用してメンバーログインセキュア
-
22-09-2019 - |
質問
ユーザー名のを保存しているとのパスワードのクッキーでユーザーグッドプラクティスの?私は実際に(がのフェイスブック、ディグ、さえずり)これを処理する方法に大きなようなウェブサイトを知りたいです。私のコードは、そのようなものです。
<?php
$username = mysql_real_escape_string($_POST['username']);
$password = md5($_POST['password']);
?>
は、すべてのログインが成功した後、私はクッキーで$username
と$password
(MD5)を格納します。そしてsession_regenerate_id()
でセッションIDを再生成
、そうでなければ、私はクッキーを認証し、ログインセッションが存在する場合、私がチェックしてユーザーを認証します。
任意のアイデア?おかげ
解決
私は少し混乱している - あなたは、PHPのセッションを使用している、またはクッキー
?あなたはセッションで($_SESSION['username'] = 'Tom'
などのデータを保存する場合)、そのデータは、ユーザーのCookieに保存されていません。
あなたは(自動ログインのようなもののために)別のクッキーにデータを保存する場合は、代わりに別の、ランダムIDを保存すると、ユーザID、データベーステーブルを検索することがあります。
autologins
----------
key (random hash)
user_id
expires
他のヒント
ただ、MD5は十分ではありません、あなたべき少なくとも、あなたのデータベースに保存することをランダムに「塩」(文字の小さなランダムな文字列)が含まれます。
編集:ところで、あなたはパスワードプレーンテキストを保存したり、暗号化されたのですか?これは大きなセキュリティ上のリスク可能性があります。
は標準的な方法は、どちらか自分自身や使用してPHPのセッション、クッキーにユーザーにセッションIDを与えることです。クッキーにユーザ名とパスワードハッシュを保存するには、まだいくつかのサイトで行われたが、私は以前のを好むています。良い例のためのGmailを参照してください。
- 彼らは彼らが持っているとどのIPどこからどのように多くのセッションを見ることができるように、それはたとえば、あなたは、ユーザーが自分のログインをより細かく制御することができます。塩とハッシュをテーマに、あなたは、データベース内のパスワードハッシュを塩漬け保存する必要があります。理想的には、塩は、ユーザーごとに異なっている必要があります。彼らはすべての彼らは長い時間を要すること、塩、のための虹のテーブルを生成することができますが、聞かせするのと同じ塩を使用した場合、データベースが盗まれたり暴露された場合には、これは(パスワードを取得するには、攻撃者のために、それは多くの困難になります彼らはその後、)かなり迅速パスワードを破ります。セキュリティのために、塩はまた、%$&^のように、いくつかの非英数文字を含める必要があります。
ジョエルL'sの答えは良いものです。私は追加したいだけのものではなく、ランダムなIDで、あなたはそれをより安全にするために、ユーザを特定するいくつかの余分な情報を追加することができたということです。
たとえば、誰かが盗むか、ユーザーのセキュリティクッキーを盗聴に対して余分なセキュリティを提供し、ユーザーのIPアドレスと塩のハッシュを使用します。
私は、Twitterはあなただけ永久に一度に一つのコンピュータからのTwitterにログインすることができる理由である、このようなものを使用していることを疑います。