ホームページ >バックエンド開発 >PHPチュートリアル >ログイン認証を効率化する方法を教えてください
最近構築したシステムです
ログインは $_COOKIE を使用して行われます
識別子 ($identifier) と確認コード ($token) が自動的に生成され、
$_COOKIE["auth"] = $identifier . ":" . $token ;有做加密,在此先不提加密的事に保存されます
ディスカッションへの返信(解決策)
一時的に考えた setcookie('next_check',"hahahaha",time()+900) ;
これは15分かかります
ログインするかどうかをチェックする関数の最外層に、
if (!!empty($_COOKIE["next_check"])) {
}
これにはセキュリティ上の問題がありますか?
もちろん、すべてのページをクエリするわけではありません。ログインに成功したら、セッションを書き込み、ユーザー ID、ユーザー名、その他のデータ配列を保存します
毎回セッションを読み取るだけです
これを解決するには共有メモリが必要です
もちろん、ログインに Cookie を使用する必要があります。私自身の暗号化キーを付けて保存します
Cookie を取得するにはサーバーに復号化キーを設定する必要があります。その後、復号化を元に戻すことで、他の人が Cookie を取得して復号化することを恐れることはありません
もちろん、それはそうですすべてのページでクエリが実行されるわけではありません。ログインに成功したら、セッションを書き込み、ユーザー ID、ユーザー名、その他のデータ配列を保存します
毎回セッションを読み取るだけです
しかし、これにより問題が発生し、バックグラウンドでアカウントをブロックすることができませんでした。彼のマシン上のセッションはまだ有効なので、時間内にキックしてください
これを解決するには共有メモリが必要です
よろしくお願いします
1. 問題は、トラフィックが多いときに負荷がかかることです 質問
2. 私はそうしませんSESSION は書くのが面倒なので使いたくないです。自動ログインするには COOKIE だけを使用する必要がありますよね
1. 検証のみです。データ変更システム データ データ ページ
Cookie を直接取得し、サーバーのキーを使用して解決します
たとえば、Cookie が変更されている場合、サーバーのキーを使用して解決することはできません。 uid と有効期限を解決できれば、uid 情報を直接クエリしてグローバル変数に保存できます。uid がないことが判明した場合は、改ざんされていることを意味するため、ログを記録する必要があります。またまた
よろしくお願いします
1. 質問 トラフィックが多いと負荷の問題が発生するのではないかと心配です
誰かをキックすることを検討している場合は、ユーザー ID としてキーを使用してユーザーのログイン情報を memcache に書き込むことができます。ユーザーのログイン ステータスと時刻を取得し、キーの有効期限を設定し、ユーザーを認証するときに、ユーザー セッションと指定された memcache キーのデータを比較します。両方があっても問題ありません。ユーザーをキックする必要がある場合は、キーの下の memcache キャッシュを直接クリアしてください
貴重なアドバイスありがとうございます!