我有一个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?
我想说的是,您的IP暴露并不是特别的安全漏洞。您可以获取任何服务器的IP地址,无论其是否由主机名支持。我建议购买域名(或映射现有域的子域),并使用A记录将其指向您的图像服务器IP地址。
例如,您可以通过转到http://fakedomain.com:8000/img/gen/trafiic.png
来访问图像。
虽然您可以将所有图像都转换为base64并以这种方式输出,但是您的源代码将会增长-最好保留单独的请求:)
替代项:
如果源提供了图像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.'">';
您可以使用this solution将图像转换为base64并将base64解码为src而不是使用url