如何隐藏img源IP?

问题描述 投票:-1回答:3

我有一个img标签,嵌入了我的公共服务器的图像路径,并将图像显示给用户:

<img src="http://13.43.68.1:8000/img/gen/trafiic.png">

但这是安全隐患,因为用户可以获取我的图像源服务器(13.43.68.1)。

所以,有什么方法可以让用户无法获得IP?例如缓存图像数据,只需将缓存的img数据显示为src。


Edit-01

我在PHP的image.tpl,聪明的模板下:

<div class="panel-body text-center">
    <h4>Daily</h4>
    <img width="360" src="http://13.43.68.1:8000/img/gen/trafiic.png.php?switch={$switch}&port={$portname}&cycle=-1d"><br><br>
    <h4>Weekly</h4>
    <img width="360" src="http://13.43.68.1:8000/img/gen/trafiic.png.php?switch={$switch}&port={$portname}&cycle=-1w"><br><br>
    <h4>Monthly</h4>
    <img width="360" src="http://13.43.68.1:8000/img/gen/trafiic.png.php?switch={$switch}&port={$portname}&cycle=-1m"><br><br>
</div>

在这种情况下,如何隐藏src IP?

php html image smarty imgur
3个回答
1
投票

我想说的是,您的IP暴露并不是特别的安全漏洞。您可以获取任何服务器的IP地址,无论其是否由主机名支持。我建议购买域名(或映射现有域的子域),并使用A记录将其指向您的图像服务器IP地址。

例如,您可以通过转到http://fakedomain.com:8000/img/gen/trafiic.png来访问图像。

虽然您可以将所有图像都转换为base64并以这种方式输出,但是您的源代码将会增长-最好保留单独的请求:)

替代项:

  • 使用Cloudflare等中间人来防止暴露您的IP地址
  • base64-但不建议这样做,因为它的页面加载成本很高(但取决于您的需求)
  • 使用脚本生成图形并将其卸载到Amazon S3之类的地方,然后从那里进行加载。

-1
投票

如果源提供了图像URL,则可以获取URL内容并将其编码为base64。检查下面的代码:

$imgURL = 'https://via.placeholder.com/350x150';
$imageData = file_get_contents($imgURL);

$imgSrc = 'data:image/png;base64,' . base64_encode($imageData);

return '<img src="'.$imgSrc.'">';

-1
投票

您可以使用this solution将图像转换为base64并将base64解码为src而不是使用url

© www.soinside.com 2019 - 2024. All rights reserved.