我想将CSRF令牌添加到登录页面上发出的每个POST请求中。
我是PHP新手,并尝试实现CSRF令牌,但由于我的愚蠢错误,我的页面无法加载。 我想使用CSRF保护来制作易受攻击的SQLi页面,这就是为什么我要编写易受攻击的代码的原因。 我想将CSRF令牌添加到此页面。我的登录页面正在按预期工作,只想添加CSRF。
<?php
session_start();
if($_POST['submit']) {
include_once('connection.php');
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);
$sql = "SELECT id,username,password FROM users where username =
'$username' LIMIT 1";
$query = mysqli_query($db, $sql);
if($query) {
$row = mysqli_fetch_row($query);
$userId= $row[0];
$dbUserName = $row[1];
$dbPassword = $row[2];
}
if($username == $dbUserName && $password == $dbPassword) {
$_SESSION['username'] = $username;
$_SESSION['id'] = $userId;
header('Location: user.php');
}
else {
echo "<b><i>Incorrect credentials</i><b>";
}
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Login</h1>
<form method="post" action="index.php">
<input type="text" name = "username" placeholder="Enter username">
<input type="password" name="password" placeholder="Enter password here">
<input type="submit" name="submit" value="Login">
</form>
</body>
</html>
如果令牌有效,则允许用户登录应用程序,否则给出错误“令牌无效”。如果令牌正确,则用户将移动到新页面。