セッションで頻繁にパスワードを使用する必要があります。パスワードで暗号化されたキーでユーザーデータを暗号化しています。だから私の質問です。 プレーンテキストパスワードをphpセッションに保存することは安全ですか(Cookieではないため、クライアント側ではありません)?もっと良い方法はありますか?または、毎回ユーザーにパスワードを要求するだけですか?
Phpseclibを使用して、rsaの秘密鍵をuserpasswordで暗号化します。キーにアクセスするたびにパスワードが必要です。私には2つのオプションがあります。パスワードとキーのどちらを保存するかです。暗号化にpasswordhashを使用することはできません。ハッシュはデータベースの「プレーンテキスト」に保存されるためです...
平文のパスワードを容量のどこにでも保持することは、通常、悪い考えです。セッションはそれ自体安全ですが、サーバー環境の他の部分と同じくらい安全です。管理者または他の正当なユーザーと悪意のあるユーザーの両方が、そこに保存されているデータにアクセスできる場合があります。あなたがそれを避けることができるなら、あなたはあなたの顧客のsecretsを扱いたくないです。つまり、どのような状況でもユーザーのパスワードが表示されないようにする必要があり、プレーンテキストのパスワードが技術的に可能な限り短くなるようにコードを作成する必要があります。
セッション中に何かにパスワードを使用する必要がある場合は、プレーンテキストのパスワードを使用しないようにアプリを設計する必要がありますが、 key derivation function toパスワードからキーを取得します次に、機密タスクに使用します。これにより、ユーザーのパスワードを公開する機会が大幅に減ります。ユーザーが持っている唯一のセキュリティは、自分だけが知っているはずの自分のパスワードのsecrecyであることを覚えておいてください。
その場合、ハッカーがサーバーにアクセスすると、パスワードがプレーンテキストで表示されます。プレーンテキストのパスワードを保存しない(どこにでも)
一般的な質問について。ユーザーにパスワードを1回要求し、暗号化されたパスワードをデータベースに保存されている暗号化されたパスワードと照合します。それらが同じ場合は、新しいセッションを開始します。ユーザーが次にサイトにアクセスしようとしたときに、このユーザーのセッションが存在するかどうかを確認します。そのため、セッションにパスワードを保存する必要はありません。
一般的にMD5
およびSHA
ファミリを直接。
認証システムを実装している場合は、クライアント情報(通常はユーザー名とパスワード)を比較し、特別なトークンを作成して、セッションまたはCookieに保存します。
if ($username == 'someuser' AND $password == 'somepassword_hash'){
$token = md5(uniqid());
// database query with along with user_id and token
$_SESSION['_token'] = $token;
}
functon varifyToken($token){
// database query here
// SELECT user_id FROM sessions WHERE token = 'token_here'
}
パスワードをプレーンテキストで保存しない。それとは別に:はい、セッションは安全です。セッションはサーバーに保存されます。セッションデータ自体がブラウザに送信されることはありません。
wiseであろうと、セッションにパスワードを格納するために必要であろうと 、おそらくそうではありません。おそらくキャッシュの理由のためかもしれませんが、それでもそれは不安定です。