我制作了简单的tryItYourself类型codeEditor。进入文本区域,我写我的代码。当单击按钮renderCode
时,代码将呈现在它旁边的div中。但是每当我在文本编辑器中使用<script>
标签时,它不会渲染标签内的任何内容。
代码如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
#area {
width: 48%;
height: 500px;
}
#showCode {
float: right;
width: 48%;
height: 500px;
margin-top: 5px;
border: 2px solid black;
}
</style>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ; ?>" method="post">
<input type="submit" value="rederCode" style="display: block"><br>
<textarea id="area" name="code" placeholder="Enter your code here" >
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
echo $_POST["code"];
}
?>
</textarea>
<div id="showCode">
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
echo "'". $_POST['code'] . " ' ";
}
?>
</div>
</form>
</body>
</html>
当我使用<script>
标签时,它向我显示控制台内的错误:
XSS审计器拒绝执行脚本'http://localhost/textEditor.php',因为找到了它的源代码在请求内。由于服务器没有发送任何内容,因此启用了审计器一个'X-XSS-Protection'而不是'Content-Security-Policy'头。
浏览器检测到代码中的跨站点脚本漏洞。
在请求
中找到了它的源代码
表示浏览器没有运行脚本,因为脚本的内容是在$_POST中发送的。如果您确定您的页面是安全的,不受XSS漏洞的影响,请在文件开头添加以下PHP:
<?php
header("X-XSS-Protection: 0");
?>