Php 如何在浏览器中安全地呈现Azure存储的图像而不显示URL?
假设我的文件存储在(删除了真实凭据): A) 这个文件现在可以下载,如果我只是浏览它-我真的不认为这应该是可能的 B) 我想在我的应用程序中呈现此内容,而不允许用户查看URL 我在后端使用PHP。是否有某种方法可以将图像下载到服务器并从那里渲染?效率高吗Php 如何在浏览器中安全地呈现Azure存储的图像而不显示URL?,php,image,azure,Php,Image,Azure,假设我的文件存储在(删除了真实凭据): A) 这个文件现在可以下载,如果我只是浏览它-我真的不认为这应该是可能的 B) 我想在我的应用程序中呈现此内容,而不允许用户查看URL 我在后端使用PHP。是否有某种方法可以将图像下载到服务器并从那里渲染?效率高吗 任何想法都值得赞赏。以下是您的选择: 使blob/容器成为公共的,并嵌入公共URL 为blob生成临时SAS令牌,并使用URL+SAS令牌嵌入 使用存储密钥从后端下载blob,并将其流式传输到客户端 使用选项1,文件必须是可公开访问的,我想这
任何想法都值得赞赏。以下是您的选择:
选项1和2的优点是blob直接从存储设备下载到用户,并且您的应用程序不必在流文件上花费时间/带宽。到
A)
这就是它的工作原理。你可以下载所有你能看到的东西。到B)
但是用户只需单击另存图像为,或者只需对页面进行屏幕截图?!解析到浏览器(客户端)的所有内容都不再受您的控制。我不介意它们保存图像。我只是不想透露我们图像的存储结构。好的,然后用php直接解析图像。阅读更多信息:下载带有file\u get\u contents('http://')的文件到本地,并使用链接中的方法将其输出。用户浏览器中真正调用的文件可以类似于getImage.php?id=referetotherealurl
编写一个脚本,并将其放在src=
属性中,而不是图像url,例如src=“getimg.php?id=1234567890”
然后为来自该scriptbase64的真实图像提供服务,对图像进行编码并使用类似于src的内容=“数据:图像/jpeg;base64,….
我会选择选项2,只生成一个短期sas令牌。URL将可见,但很快就会过期。选项3的缺点是,在扩展时,它会影响您扩展Web应用程序的方式,因为您不会将流量转移到存储帐户。这可能会导致代价高昂的情况:)