このページにアクセスするためのユーザー名とパスワードは 1 つしかないため、データベース内に保存するよりもおそらく安全であるため、PHP 自体に保存することにしました。ただし、セッションを把握しようとしており、次のことを望んでいます。
- いかなる方法でもセキュリティを損なうことはありません。
- 他の人がログインしようとして失敗したときに、セッション (ログインしているユーザーの) スクリプトの実行を停止しません。たとえば、ログインしているユーザーのセッションを削除したくありません。ばかげた質問かもしれませんが、とにかく聞いてみようと思いました。
このための私の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_idとsession_idを見てきました。複数のユーザーがログインしているときに問題が発生することが報告されています (古いセッション ID と新しいセッション ID)。私の状況では(データベースにデータを保存していないため)、まったく使用するのが賢明でしょうか?index.php
session_id()
session_regenerate_id
session_regenerate_id
のおかげで更新されたコードM Miller