为什么login.php破坏图像显示后正斜杠?

时间:2015-10-08 08:59:10

标签: php html apache

一点背景。我公司的xss扫描程序发现login.php容易受到:

https://uzypav/login.php/ab7e7%22%3E%3Cimg%20src%3da%20onerror%3dalert(1)%3E47eee

这已经通过htmlentities()来解决。

但是我注意到在我的脚本名称(https://uzypav/login.php/)之后的正斜杠(" /")会停止显示图像,但它会显示我的内容。

  1. 这是正常的吗?
  2. 有没有办法防范这个?
  3. 这是404情况吗?
  4. 请参阅下面的代码。感谢您的帮助。

    <div style="background-image:url(images/back.jpg)">
    <h1>LOGIN</h1>
    <form action="login.php" method="POST">
        <input id="username" type="text" name="username" value="" /><br>
        <input id="password" type="text" name="password" value="" /><br>
        <input id="submit" name="submit" type="submit" value="submit" />
    </form>
    </div>
    
    <?php
    if(@$_POST["submit"] == "submit")
        echo "submitted";
    
    
    ?>
    

2 个答案:

答案 0 :(得分:0)

首先,我建议打开一些Web调试器并查看http请求。您可能会看到缺少资源的请求。
由于图像路径不以“/”开头,因此它是相对路径。相对于当前目录,在https://uzypav/login.php的情况下是根目录。
添加正斜杠时,当前目录为https://uzypav/login.php/,浏览器发出https://uzypav/login.php/images/back.jpg请求 - 该请求不存在(可能)

答案 1 :(得分:0)

  1. 是的,这是正常的,请参阅@RoyBass的答案
  2. 是的,您可以在css
  3. 的网址中设置完整的图片路径onPause()
  4. 你可能,因为用户访问了他不应该访问的东西,但是你可以https://uzypav/images/back.jpg而忽略它。