繁体   English   中英

是否有可能阻止php脚本在img src标签中运行?

[英]Is it possible to block a php script from running in a img src tag?

是否有可能阻止php脚本在img src标签中运行?

我不希望以这种方式在网页上调用http://example.com/page.php中的脚本来执行:

<img src="http://example.com/page.php">

我希望它仅在直接打开页面或用户单击该页面上的链接时才运行,因此阻止引荐来源不是解决方案。

是的,可以使用accept标头来执行此操作,但是个人用户可以绕过保护。 浏览器下载图像时,它会向标头发送期望的数据-例如, Accept: image/png,image/*;q=0.8,*/*;q=0.5
但这当然不能依靠,因为任何用户都可以关闭此标头,并且任何浏览器都可能不会发送此标头
在这里,您可以阅读有关http Accept标头兼容性的文章。

另一个有用的标头可以是Referer标头。 此标头告诉您调用此请求的网站(该网站上的图像,该网站上的CSS或仅来自此网站的链接)。 规则是相同的-大多数用户将发送标头,但有些用户可能将其关闭。
许多人安装了插件来阻止引荐来源标头,以增加他们的隐私。

否。无法阻止PHP脚本在image标签中运行。

但是,运行脚本后,您可以根据标头发送回不同的内容。 因为可以修改标题,所以这不是防止任何事情的可靠方法。

但是,在img标签中运行脚本应该不是问题。 一旦浏览器发现内容不是图像,它将直接丢弃它并且不执行任何操作(否则它可能会显示某种错误)。

我做了一些测试。 如果将内容类型刷新为text / html(可能还有图像以外的其他内容),则Firefox和IE似乎将停止等待完整的答复。 但是我看不到他们断开了连接。 Chrome浏览器却等待整个页面。

因此,如果浏览器没有断开连接或PHP无法检测到它,则似乎必须渲染整个页面。 而且,您将必须尽早决定所有标头设置。 因此,这是不值得的。

frametest.html

<html>
<head>
    <title>Frame test</title>
</head>
<body>
    <h1>Frame test</h1>
    <p>The following frame is not to be displayed in frames!</p>
    <img src="frametest.php"/>
</body>
</html>

frametest.php

<?php
header('Content-Type: text/html');
echo " ";

flush();

sleep(3);
echo " \r\n ";
flush();
$aborted = (connection_aborted() ? 'yes' : 'no');
$status = (connection_status() ? 'yes' : 'no');

$temp = mail('your@email.here', 'Frametest', 'Client Aborted: ' . $aborted . ' Status: ' . $status);

?>

<html>
<head>
<title>test</title>
</head>
<body>
<h1>Test</h1>
<p>Not to be displayed in frames!</p>
<p>Mail ok? <?php echo ($temp ? 'Yes' : 'No'); ?> </p>
</body>
</html>

尝试显示来自 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.

相关问题 在img标签中阻止php脚本 尝试显示来自 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> 将图像从img标签的src上传到php 使用当前数据参数在img src标签中添加PHP脚本 Zend Framework:img src标签中的PHP脚本导致图像损坏 如何在元标记html中添加img src(使用php脚本) 从html img src标记引用.php文件 正则表达式和 PHP - 将 src 属性与 img 标签隔离 从img标签JQuery AJAX PHP的src属性上传图片 图像未使用 img src 标签显示在 php 中
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM