さて、私の質問が好きな人はいないので、言い換えさせてください。
ユーザーはHTMLフォームにログインします。JavaScriptを使用すると、パスワードはローカルでハッシュされます(ソルトも使用されます)。サーバーはパスワード+ソルトがどうあるべきかを知っています、ユーザーはすでに登録されています、何とか何とか。ここで、ユーザーはページを要求します。サーバーはランダムなIDをユーザーに送信します。ユーザーが次のページをロードすると、このランダムIDがローカルに保存されているキーに追加され、ハッシュされてサーバーに送信されます。サーバーは、キーが何であるかとランダムIDを認識し、同じハッシュを実行して比較します。それらが一致する場合、おめでとう、それは適切なコンピュータから来ました。そうでない場合は、誰かがTCP/IPトラフィックを盗聴しています。
これはすべて明らかにSSLがないためです。そうでない場合、これは非常に冗長になります。
私の質問-クライアントPCにキーを保存するにはどうすればよいですか?
元の投稿:
こんにちは;
私はPHPコンテンツ管理システムの開発に取り組んでおり、安全なログインシステムを思いついた。唯一の問題は、何らかの形式のクライアント側ストレージ(非常に小さいキーの場合、長さ40文字)が必要になることです。そうしないと、ユーザーはページを読み込むたびにパスワードを入力する必要があります。
PHPまたはJavaScriptを使用して、40文字の小さな文字列をクライアントのPCに保存し、後で取得できるようにする方法はありますか?
編集:クッキーはオプションではありません。この40文字の文字列はクライアントのコンピューターを離れることができず、設定されたすべてのCookieが各HTTPヘッダーとともに送信されます。
繰り返します-クッキーは安全ではなく、これに対する実行可能な選択肢ではありません。
このように作り直します-クライアントはHTTPフォームを送信します。一部のスクリプト言語(JavaScriptなど)では、パスワードはフォームから削除され、サーバーに送信されず、暗号化され、クライアント側に保持されます。これを取得して確認できます(ユーザーに送信されたキーでパスワードをハッシュすることにより)サーバー)。この検証はサーバーに送信され、キーは送信されません。