【问题标题】:<script> Tag is not rendering within the php echo statement<script> 标签未在 php echo 语句中呈现
【发布时间】:2015-08-13 19:44:16
【问题描述】:

我制作了简单的 tryItYourself 类型代码编辑器。在文本区域中,我编写了我的代码。 当单击按钮renderCode 时,代码将呈现在它旁边的 div 中。 但每当我在文本编辑器中使用&lt;script&gt; 标签时,它不会呈现标签内的任何内容。

这里是代码。

<!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>

每当我使用&lt;script&gt; 标签时,它都会在控制台内显示一个错误:

XSS Auditor 拒绝执行脚本 'http://localhost/textEditor.php' 因为找到了它的源代码 请求内。审核员已启用,因为服务器未发送任何内容 一个“X-XSS-Protection”或“Content-Security-Policy”标头。

【问题讨论】:

  • 你在使用某种框架吗?
  • 不,我没有使用任何框架。我在 apache web 服务器上使用 php。
  • 您的浏览器阻止了该脚本的显示,因为它认为这是基于跨站点脚本的攻击 (XSS)。
  • 但是当我简单地在另一个文件中使用时,例如 document.write('hello'); ?> 它会在浏览器中显示 hello。
  • 如果它看起来像跨站点脚本攻击,那么我如何在我的 tryItYourself 中使用 javascript。

标签: javascript php


【解决方案1】:

浏览器在您的代码中检测到跨站点脚本漏洞。

在请求中找到它的源代码

表示浏览器没有运行脚本,因为脚本的内容是在 $_POST 中发送的。如果您确定您的页面没有 XSS 漏洞,请在文件开头添加以下 PHP:

<?php
    header("X-XSS-Protection: 0");
?>

【讨论】:

  • “如果你确定你的页面没有 XSS 漏洞”——这意味着你需要实现 CSRF 保护。
猜你喜欢
  • 1970-01-01
  • 2019-07-08
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
相关资源
最近更新 更多