私は自分の認証方法(学校プロジェクト)を書こうとしましたが、私は立ち往生しています。 安全な認証を解決する方法を教えてください:セッショントークンとCookieで安全に認証する方法は?更新された
「保護する」必要があるすべてのものを含むindex.phpがあります。ここで私のコードの関連部分をコピーします。
checkUserAuth(場合session_start();
function checkUserAuth(){
$authStatus = false;
if (isset($_SESSION['PHPSESSID'])){
if ($_SESSION['PHPSESSID'] == $_COOKIE['PHPSESSID']){
$authStatus = true;
}
}
return $authStatus;
}
if(!checkUserAuth()){
include_once(dirname(__DIR__).'/admin/authentication/login.php');
exit();
}
はindex.php更新
)は、適切に認証されたユーザーが何があることを、判断しないlogin.phpを含めると、スクリプトの残りの部分を停止します。
更新login.php:私はそれが起こるかもしれないと想像何
if(array_key_exists($username, $users) && password_verify($password, $users[$username])){
$_SESSION['PHPSESSID'] = $_COOKIE['PHPSESSID'];
$_SESSION['login_user'] = $_POST['user'];
、ログイン情報が正しければ、login.phpはクッキーを設定し、ページを更新していることです。その後、index.phpはクッキーを検出し、ログイン部分をスキップします。
ログインはかなり分かりやすくなっています。Junedのおかげで、私は今働いていると思います。しかし、私はどれくらい安全なのか分かりません。
1から非常に、私は間違っていますか?
。通常、ほとんどの人が行うことは、他のすべてのコントローラページの開始時に呼び出される設定ページがあることです。その設定ページ内では、start_session()関数を使用してユーザーにセッションIDを与えます。これはクッキーの形式でユーザーに送信され、セッションが終了するまでブラウザとサーバーに保存されます。あなたのユーザを認証した後、$ _SESSIONスーパーグローバルに変数を格納し、次に設定ページでifステートメントを使用して、その変数が存在するかどうかを調べることができます。そうでない場合は、それらをログインページに送信します。 – Juned
アドバイスされたコードで質問を更新しました。これはあなたが提案したものですか? –