私は現在、訪問者が一緒に貼り付けて書いた簡単なスクリプトを介してログインできるWebサイトを持っています。現在、私は訪問者のログインを維持するためにセッションのみを使用しています。ユーザーのログイン状態を保存するためにWebサイトにCookieを追加することに利点はありますか?
それとも、もっと良い方法はありますか?
PHPを使用する
私は現在、訪問者が一緒に貼り付けて書いた簡単なスクリプトを介してログインできるWebサイトを持っています。現在、私は訪問者のログインを維持するためにセッションのみを使用しています。ユーザーのログイン状態を保存するためにWebサイトにCookieを追加することに利点はありますか?
それとも、もっと良い方法はありますか?
PHPを使用する
PHPセッションを使用している場合は、Cookieを使用しています。PHPは、セッションIDをCookieに保存し、セッションデータをWebサーバー上のディスク上のファイルに保存します。
@Ramiro Gonzalez Macielは、そのスクリプトを作成したと述べました。例として取り上げるフレームワークは必要ありません。フレームワークには通常、スクリプトがラップされ、適切に配置されています。
その質問に答えるには:
私は通常、彼のmd5(パスワード)と彼のユーザー名から結合されたいくつかのmd5文字列をCookieに保存するので、彼がログインしている私のWebサイトに次に入るタイミングがわかるので、彼に再度ログインさせないようにします。
私の例:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
// sql and escape stuff witch will return 1 if he has entered a valid login
if($sqlreturn == 1){
// do login
$wraplogin = md5($username."-".md5($password)."-".SECRET_KEY); // I always define a define('SECRET_KEY', 'mysecretkey'); in global file.
// now you can store that $wraplogin in cookies and remember his login. Next time he enters the website, you read that cookie, compare it with what you have in your database and let him in.
}
?>
これが最良の例ではないことはわかっていますが、私は個人的に非常に大規模なWebサイト(> 500.000ユーザー)で使用しており、まだハッキングされていません:)
これが、ログイン部分のCookieの利点です。
幸運を祈ります。
Webフレームワーク(Javaサーブレットなど)は通常、Cookieを使用してセッションを識別します。他の通常のオプションはURLパラメータです。したがって、Webフレームワークを使用していると仮定すると、セッションIDを格納するためにすでにCookieを使用している可能性があります。Webフレームワークは、このIDを使用して、すべてのリクエストでSessionオブジェクトを識別します。Cookieはサーバーの再起動後も存続しますが、Cookieはブラウザーに保存されるため、セッションの永続性を構成しない限り、通常、Sessionオブジェクトは存続しません。
多くのWebサイトが実装する通常の「rembemberme」オプションのようにユーザーに「自動ログイン」を実行させたい場合、フレームワークがそれを提供する場合は、Sessionオブジェクトを永続化する必要があります。または、同様のシステムを実装し、Cookieを使用して「ログイントークン」を保存し、ユーザーがシステムにアクセスして自動ログインまたはログインページに送信するときにそのトークンを確認します。(編集:Mihaiが他の回答で提案しているように)
独自の方法を実装する場合は、一般的なWebフレームワークがこれをどのように実装するか、特にユーザーデータをCookieに保存する際のセキュリティとプライバシーの側面を確認することをお勧めします。