【问题标题】:How to show an image which is secured by http authentication如何显示受 http 身份验证保护的图像
【发布时间】:2014-07-25 10:21:17
【问题描述】:

如何在不显示身份验证窗口的情况下显示来自具有标准 http 保护的服务器的图像?

我现在使用标准 html

<img src="...">

但由于图像受到保护,因此需要一个身份验证窗口。我确实有登录数据,如何显示图像?

问候,汤姆。

【问题讨论】:

  • 你应该提供一些代码。
  • 你能用 PHP 吗?如果没有,请忽略此评论。如果是这样,我建议使用 php 脚本作为代理,并使用带有基本身份验证 (stackoverflow.com/questions/2140419/…) 的 cURL 从远程位置读取图像。然后将 header-content 类型设置为任何图像类型。例如对于 JPEG: header('Content-Type: image/jpeg');我经常使用这种机制。

标签: php html image http-authentication


【解决方案1】:

这应该可行。只需将用户名和密码替换为您的身份验证详细信息即可。 (警告:不适用于所有浏览器)

<img src="http://username:password@server/Path" />

我建议将其放在服务器上的单独文件中。这样您就可以在不暴露身份验证信息的情况下引用它。

【讨论】:

    【解决方案2】:

    我使用了 IrishGeeks 的提示来获得解决方案。它适用于所有浏览器。 script.php 是

    <?php
    $url    = $_GET['url'];
    $c = curl_init($url);
    $authString = 'user:pass';
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($c, CURLOPT_USERPWD, $authString);
    
    $content = curl_exec($c);
    $contentType = curl_getinfo($c, CURLINFO_CONTENT_TYPE);
    header('Content-Type:'.$contentType);
    print $content;
    ?>
    

    然后使用

    <?php
    print '<img src="script.php?url='.urlencode('http://www.example.com/image.bmp').'" />';
    ?>
    

    获取图像。

    【讨论】:

    • 我很震惊,这段代码是这个问题的公认答案。虽然您的脚本可以通过受 htaccess 保护的网站加载图像,但它会使您的网站容易受到包括 XSS 注入在内的一系列攻击。您正在使用给定网站的内容类型,并且没有对恶意内容或其他内容进行任何检查。我不介意有多少网站是易受攻击的,因为他们在这里复制了这段代码,也不介意它是如何工作的。请编辑它并停止传播不安全的代码。
    猜你喜欢
    • 2014-11-20
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多