Php 无法在urlencode()上使用htmlspecialchars()重定向
我试图在登录后将用户重定向到Php 无法在urlencode()上使用htmlspecialchars()重定向,php,xss,Php,Xss,我试图在登录后将用户重定向到请求页面,在谷歌搜索后我尝试了此代码 登录页面链接 echo "<a href='/login.php?ref=". urlencode($_SERVER['REQUEST_URI']) ."'>login</a>"; 上述方法工作正常,但容易受到XSS login.php?ref=警报(%27恶意%20内容%27) 所以我像这样添加了htmlspecialchars() if ($_GET['ref'] != '') {
请求页面
,在谷歌搜索后我尝试了此代码
登录页面链接
echo "<a href='/login.php?ref=". urlencode($_SERVER['REQUEST_URI']) ."'>login</a>";
上述方法工作正常,但容易受到XSS
login.php?ref=警报(%27恶意%20内容%27)
所以我像这样添加了htmlspecialchars()
if ($_GET['ref'] != '') {
$url = htmlspecialchars($_GET['ref']);
} else {
$url = "/";
}
但它不会被重定向,而是显示404错误
任何关于如何防止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 ?>
if($\u GET['ref']!=''){
$url=htmlspecialchars($_GET['ref']);
}否则{
$url=“/”;
}
使用社交媒体帐户或电子邮件登录
这就产生了一个问题
<?= $_SERVER['HTTP_HOST'].$url ?>
并删除此行并解决。
echo'
和重定向部分:头('Location:http://'.$\u SERVER['http\u HOST'.$\u GET['ref'])代码>@RolandStarke仍然不能工作我看到XSS
脚本代码输出
。XSS漏洞在哪里?当我尝试http://localhost:8000/login.php?ref=%3Cscript%3Ealert(%27%20内容%27)%3C/script%3E
我看到警报
这是我的问题。如果您在
之后删除了带有XSS漏洞的代码,那么XSS漏洞就消失了,您无需再做任何事情。
<?= $_SERVER['HTTP_HOST'].$url ?>