登录后尝试将用户重定向到requested_page
,在使用谷歌搜索后,我尝试了此代码
登录页面链接
echo "<a href='/login.php?ref=". urlencode($_SERVER['REQUEST_URI']) ."'>login</a>";
以及login.php
if ($_GET['ref'] != '') {
$url = $_GET['ref'];
} else {
$url = "/";
}
if ($user->login($username, $password)) {
$_SESSION['username'] = $username;
header("location:http://" . $_SERVER['HTTP_HOST'].$url);
exit();
}
上面的方法很好用,但是容易受到XSS
login.php?ref=<script>alert(%27Malicious%20content%27)</script>
所以我这样添加了htmlspecialchars()
if ($_GET['ref'] != '') {
$url = htmlspecialchars($_GET['ref']);
} else {
$url = "/";
}
但是它没有被重定向,而是显示404 error
任何帮助我如何防止XSS攻击
最终解决。
错误是通过调试代码创建的
if ($_GET['ref'] != '') {
$url = htmlspecialchars($_GET['ref']);
} else {
$url = "/";
}
<h6 class="small text-black-50">Log in with social media account or email</h6>
<?= $_SERVER['HTTP_HOST'].$url ?>
这造成了一个问题
<?= $_SERVER['HTTP_HOST'].$url ?>
并删除此行并解决。