我明白为什么下面这样不好,并且必须使用 htmlspecialchars 来防止某些 xss 漏洞:
<?php $url = '<plaintext>';
echo $url;?>
像这样:
<?php $url = '<plaintext>';
htmlspecialchars($url, ENT_QUOTES, "UTF-8");
echo $url;?>
在我的数据库中,我只存储用户提供的文件名。(我相信这会随着我对这个主题的了解更多而改变)
我想知道的是,如果下面的内容实际上是在做任何事情来防止 XSS?与之前的案例相比,它的漏洞是否更少?
我尝试过注入带有和不带有 htmlspecialchars 的脚本标签,在这两种情况下似乎都没有做任何事情。脚本代码不会执行。
它安全吗?htmlspecialchars 是适合这项工作的工具吗?我怎样才能让它变得更好?
$sql['image'] 是从我的数据库中获取的,下面是显示图像的代码。
<?php $url = "/images/" . $sql['image'] . ".jpg";
$url = htmlspecialchars($url, ENT_QUOTES, "UTF-8");?>
<img src="<?php echo $url;?>">
输出:
<img src="/images/test.jpg">