Web ページのログイン システムを初めて作成し、セキュリティについて調べようとしましたが、それが正しいかどうかわかりません。
これまでのところ、ユーザー名/パスワードが保存されており、パスワードは sha256 と 3 文字のソルトでハッシュされています。ユーザー名とパスワードが正しい場合、次のような新しいセッション ID を作成します
session_regenerate_id ();
$_SESSION['valid'] = 1;
$_SESSION['userid'] = $userid;
私がチェックするすべてのページで
function isLoggedIn()
{
if(isset($_SESSION['valid']) && $_SESSION['valid'])
return true;
return false;
}
これを使用して、正しいユーザーを確認します
$username = $_POST['username'];
$password = $_POST['password'];
//connect to the database here
connect();
//save username
$username = mysql_real_escape_string($username);
//query the database for the username provided
$query = "SELECT password, salt
FROM users
WHERE username = '$username';";
$result = mysql_query($query);
if(mysql_num_rows($result) < 1) //no such user exists
{
//show incorrect login message
}
//check the password is correct for the username found
$userData = mysql_fetch_array($result, MYSQL_ASSOC);
$hash = hash('sha256', $userData['salt'] . hash('sha256', $password) );
if($hash != $userData['password']) //incorrect password
{
//show incorrect login message
}
else
{
//setup a new session
validateUser();
//redirect to the main page
header('Location: main.php');
die();
false の場合、ログイン ページに送り返されます。これは十分に安全ですか?
メインページにはhtmlリンクもあります
<li><a href="main.php">Home page</a>
これらのリンクが使用されている場合、メイン ページの php スクリプトを終了する必要がありますか?