我不确定为什么我的代码没有存储 XSS

I'm not sure why my code is not stored XSS

更新:我将有效负载更改为 "<img src="fake.jpg" onerror="alert()"> 并且 XSS 有效,所以我仍然不知道为什么它不起作用,但至少我存储的 XSS 现在可以正常工作。 感谢大家的帮助。

我从 GitHub 下载了一个聊天代码,代码是用 PHP 和 MYSQL 编写的我想让那个聊天易受存储的 XSS 攻击,我非常不知道为什么不是。 当然,一切都存储在数据库中,但每当我尝试注入 XSS 时,标签或标签的内容都没有显示,但在数据库中,我看到了 alert() 它只是不让我在网站上看到它本身... 有谁知道可能导致问题的原因是什么? 这是 index.php:

<?php
include 'db.php';
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>::Message::</title>
    <link rel="stylesheet" href="style.css">
    <script>
        function ajax() {
            var req =  new XMLHttpRequest();
            req.onreadystatechange = function() {
                if (req.readyState == 4 && req.status == 200) {
                    document.getElementById('chat').innerHTML = req.responseText;
                } 
            }
            req.open('GET','chat.php', true);
            req.send();
        }
        setInterval(function(){ajax()},1000);
    </script>
</head>
<body onload="ajax();">

<div class="page">
    <div class="display-box">
        <div id="chat"></div>
    </div>
    <div class="form">
        <form action="" method="post">
            <label for="name">Name:</label><br>
            <input type="text" name="name" placeholder="Your name"><br>
            <label for="message">Write some thing:</label><br>
            <textarea name="message" id="message-write" cols="30" rows="3"></textarea><br>
            <input type="submit" name="submit" value="Send">
        </form>
        <?php
        if (isset($_POST['submit'])) {
            $name = $_POST['name'];
            $message = $_POST['message'];

            $query = "INSERT INTO tbl_chat (name, message) VALUES ('$name','$message')";
            $run = $con->query($query);
        }
        ?>
    </div>
</div>
    
</body>
</html>

这是聊天内容:

<?php
include 'db.php';
            $query = "SELECT * FROM `tbl_chat` ORDER BY id DESC";
            $run = $con->query($query);
            while($row = $run->fetch_array()):
        ?>
        <div class="chating_data">
            <span id="name"><?php echo $row['name'];?></span><br>
            <span id="message"><?php echo $row['message'];?></span>
        </div>
<?php endwhile; ?>

我认为您使用的现代浏览器可能会阻止对您的利用。这并不意味着该应用程序不易受攻击,它只意味着它非常容易受到攻击,甚至浏览器也可以自动检测到漏洞。

尝试发送以下响应header:

X-XSS-Protection: 0

你可以用 header('X-XSS-Protection: 0'); 之类的东西来做,看看是否允许你尝试 XSS。您也可以在此聊天中显示 XSS 消息,而不是响应您的“恶意”请求,但之后 - 它应该可以工作,因为浏览器将无法将您的请求与响应相关联。