0

このページにアクセスするためのユーザー名とパスワードは 1 つしかないため、データベース内に保存するよりもおそらく安全であるため、PHP 自体に保存することにしました。ただし、セッションを把握しようとしており、次のことを望んでいます。

  1. いかなる方法でもセキュリティを損なうことはありません。
  2. 他の人がログインしようとして失敗したときに、セッション (ログインしているユーザーの) スクリプトの実行を停止しません。たとえば、ログインしているユーザーのセッションを削除したくありません。ばかげた質問かもしれませんが、とにかく聞いてみようと思いました。

このための私のindex.phpファイルは、phpで次のようになります。

session_start();

if (!isset($_SESSION['Admin']))
{
    if (isset($_POST['username'], $_POST['password']) && $_POST['username'] == 'someUsername' && $_POST['password'] == 'someVeryStrongPassword')
    {
        $_SESSION['Admin'] = true;
        session_write_close();
    }
    else {
            // You don't have access, go back to login page.
        session_destroy();
        header("location:login.php");
        exit();
    }
}

// This will now be used for any subsequent, same page requests, such as:  `index.php?action={something}`, etc. but will always use `index.php` as the main page.

// Is it now safe to continue on with code assuming that the user is logged in at this point?  Should there be anything else to consider adding?  Possibly into the $_SESSION[] array?

私のlogin.phpファイルは実際にはHTMLであり、次のようになります。

<!DOCTYPE html>
<html>
<head>
<title>Administration</title>
</head>
<body>
<form name="login" method="POST" action="index.php">
    <label for="user">Username: <input id="user" type="text" name="username" /></label><br />
    <label for="pass">Password: <input id="pass" type="password" name="password" /></label><br />
    <p><input type="submit" value="Login" /></p>
</form>
</body>
</html>

繰り返しますが、ファイル$sess_id内で送信されるすべてのフォームに変数を添付し、. これは十分に安全ですか?session_regenerate_idsession_idを見てきました。複数のユーザーがログインしているときに問題が発生することが報告されています (古いセッション ID と新しいセッション ID)。私の状況では(データベースにデータを保存していないため)、まったく使用するのが賢明でしょうか?index.phpsession_id()session_regenerate_idsession_regenerate_id

のおかげで更新されたコードM Miller

4

2 に答える 2