繁体   English   中英

PHP: <script> tag echoed from $_POST is mysteriously blocked

[英]PHP: <script> tag echoed from $_POST is mysteriously blocked

我正在尝试测试从PHP安全中学到的信息。 我有一个带有POST表单和单个textarea输入的简单HTML5页面,在其中输入了以下JS代码:

<script>var x = 5; alert(x);</script>

在接收PHP页面中,我只是echo $_POST['varname']; 查看JS代码的执行情况。 当然,这是尝试清理输入的第一步。

...但是它不起作用! 我得到的HTML代码是字面上的

<doctype html>
<html>
<body>
<script>var P = 3; alert(P);</script></body>
</html>

...但是警报没有运行! 更加奇怪的是,当我将代码原样复制到PHP文件中,而无需使用PHP就可以返回此代码时,它不会再次运行,但是如果我更改了变量名或其值,它运行!

Chrome和Safari均会发生这种情况。 我检查了发送和接收的标头,找不到任何可疑的内容。

有谁知道这是什么奇怪的伏都教魔法? 因为我在这里迷失了方向。

我运行您的代码,并在Chrome的控制台上显示

“拒绝执行JavaScript脚本。在请求中找到脚本的源代码。”

因此,这可能是一种自然的安全措施,代码没有错。

行为可能因浏览器而异,因为它们使用的方法不同

找到了解决方案。 这是WebKit本身的安全功能-这就是Chrome和Safari都拥有它的原因。 为了防止某些形式的XSS攻击,它阻止页面执行在请求标头中发送的JS代码。 绕过此方法的方法是发送响应头

x-xss-protection: 0

现在我所有的假冒恶意代码都能很好地运作。

尝试显示来自 PHP 脚本的回显图像和 ` <img src="“…”`" tag< div><div id="text_translate"><p> 目标:</p><p> 1)我在 web 根目录之外有一个图像文件夹,其中放置了来自 web 应用程序的所有图像(每个图像路径都保存在数据库表中);</p><p> 2) 我想根据用户的请求获取该图像。</p><p> 很简单,对吧?</p><p> 我做了:</p><p> a) 创建一个 class 来读取图像(具有我记得的所有安全功能和保护措施)。 它(成功地)返回使用相应的 mime 类型编码(base64)的图像。</p><p> b) 出于演示目的,我创建了一个 index.php,它具有:</p><p> &lt;img src="agivenscript.php?img=name.jpeg"&gt;</p><p> 我在这里唯一的目标是从我的 web 应用程序中的任何其他地方调用一个脚本,该脚本输出具有相应 mime 类型的 base64 编码图像。</p><p> c) 创建了一个脚本“agivenscript.php”,它通过 GET 接收图像名称,实例化我的 class 并在一切顺利时获取 base64 编码图像。 然后它与图像相呼应。</p><p> 怎么了:</p><ul><li> 当我做 output - 使用 echo '&lt;img src="'. $output64encodedwithmimetype. '"&gt;'; - 在 agivenscript.php 中,它就像一个魅力;</li><li> 此外,如果我将 $output64encodedwithmimetype 内容直接放在 index.php 的 src 标记中,它也可以工作。</li><li> 但是,当我尝试&lt;img src="agivenscript.php?img=name.jpeg"&gt;时它不起作用。</li></ul><p> 由于 base64 编码的图像显然很好(并且具有 mime 类型),我错过了什么? 任何想法?</p><p> 预先感谢。</p></div>

[英]Trying to display an echoed image from a PHP script in and `<img src=“…”` tag

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 尝试显示来自 PHP 脚本的回显图像和 ` <img src="“…”`" tag< div><div id="text_translate"><p> 目标:</p><p> 1)我在 web 根目录之外有一个图像文件夹,其中放置了来自 web 应用程序的所有图像(每个图像路径都保存在数据库表中);</p><p> 2) 我想根据用户的请求获取该图像。</p><p> 很简单,对吧?</p><p> 我做了:</p><p> a) 创建一个 class 来读取图像(具有我记得的所有安全功能和保护措施)。 它(成功地)返回使用相应的 mime 类型编码(base64)的图像。</p><p> b) 出于演示目的,我创建了一个 index.php,它具有:</p><p> &lt;img src="agivenscript.php?img=name.jpeg"&gt;</p><p> 我在这里唯一的目标是从我的 web 应用程序中的任何其他地方调用一个脚本,该脚本输出具有相应 mime 类型的 base64 编码图像。</p><p> c) 创建了一个脚本“agivenscript.php”,它通过 GET 接收图像名称,实例化我的 class 并在一切顺利时获取 base64 编码图像。 然后它与图像相呼应。</p><p> 怎么了:</p><ul><li> 当我做 output - 使用 echo '&lt;img src="'. $output64encodedwithmimetype. '"&gt;'; - 在 agivenscript.php 中,它就像一个魅力;</li><li> 此外,如果我将 $output64encodedwithmimetype 内容直接放在 index.php 的 src 标记中,它也可以工作。</li><li> 但是,当我尝试&lt;img src="agivenscript.php?img=name.jpeg"&gt;时它不起作用。</li></ul><p> 由于 base64 编码的图像显然很好(并且具有 mime 类型),我错过了什么? 任何想法?</p><p> 预先感谢。</p></div> javascript关闭标记两次从php回显 <a>标签未从 php 回显到 html</a> 搜索引擎能否找到从PHP脚本回显的元标记信息? PHP:从页面上回显的内容中剥离图像标记 php mysqli脚本神秘地无法正常工作 从回显的 php 传递数据 在PHP中使用GET和POST回送表单数据并进行操作 如何修复PHP Post请求中没有回显的变量? 如何修复PHP Post Request中没有回显的变量?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM