首页 > 解决方案 > 有没有办法对普通用户隐藏图片网址?

问题描述

我试图弄清楚如何在查看控制台或源代码时隐藏图像的 url。

我已经看到其他人询问此问题以阻止用户下载图像,但这不是问题 - 事实上他们应该能够下载/保存图像。

真正的原因是因为我的用户正在将我网站上的图像上传到第三方存储服务,如 cloudinary。我不希望用户知道图像的去向,因为我担心他们会操纵发送或接收的数据。这只是一项额外的安全措施,即使在检查发送/接收的图像确实是图像 url 而不是恶意代码或任何东西之后也是如此。

你有什么建议在控制台中隐藏网址?我完全不知道从哪里开始。

详细说明一下:用户在我的网站上单击“浏览文件”,然后单击“上传”。文件被传输到云存储。然后,我的网站从 cloudinary 获取图像 url,将 url 存储在我的数据库中,并将它们显示在用户个人资料的 div 框中。像这样的东西:

<div class="listing_img" style="background-image:url('.$img_url.');"></div>

其中 $img_url 是数据库中的一行。

有点像一个图像存储网站,但不完全是,人们不会来我的网站存储图像。用户在任何阶段都不会看到他们的图像被发送到哪个 API url,除非他们当然在浏览器控制台中看到“img src=akdklasdjakl”。

我不确定这是否是正确的方法,但这似乎不是一个坏主意。

标签: javascriptphpmysqlimagesecurity

解决方案


您可以尝试使用 adata-uri添加图像数据而不是图像 url - 就像您对内联图像所做的那样。因此,在 CSS 中,您可以尝试:

style="background:url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKu..... etc) no-repeat;"

例如:

这使用远程图像,但您可以使用本地文件路径 - 甚至那些没有文档根目录的文件路径。

    $source='http://jumanjipets.co.uk/wp-content/uploads/2018/02/koi.jpg';
    $contents=file_get_contents( $source );

    printf( "<img src='data:image/jpeg;base64, %s' />", base64_encode( $contents ) );

推荐阅读