这篇文章主要是聊聊图片展示的问题。
背景
假设某一个网站上的所有图片存在GCP的Storage上,在Google Doc和Google Group的topic里面引用了这些图片,但是却无法直接显示在文中。
分析原因
- 通过gmail的方式往一个Group发送topic,Gmail中的图片必须是对公网可见的图片才能直接在email中显示。
- 通过Google Doc API把内容以HTML的形式创建一个Google Doc,在创建的时候,只有对公网可见的图片才能写入到Google Doc中。
Storage的中的图片可以“make public”,但是图片一旦对外开放就要考虑安全问题。
考虑的安全问题
假设Storage上存了很多图片,图片的命名是以ID命名的,1.jpg、2.jpg、3.jpg......10000.jpg。这些图片如果都make public,不怀好意的人知道了其中的一张图就可以猜测并且遍历得到Storage中其他图。如一张图的地址如下:https://storage.googleapis.com/bucketname/images/1.jpg,只要改变最后的id,写个脚本就可以得到Storage上所有的图片了。
Storage中不make public的图片的地址是https://storage.cloud.google.com/bucketname/images/1.jpg
而make public以后,图片的访问地址是
https://storage.googleapis.com/bucketname/images/1.jpg
解决方案
Gmail中的图片的地址如下:
https://mail.google.com/mail/u/1?ui=2&ik=5bbe28221b&attid=0.1&permmsgid=msg-f:1594263881727398649&th=161ff68dbc98d2f9&view=fimg&sz=w1600-h1000&attbid=ANGjdJ_n1UV9Lv5KdqZzwYNjGMg5ihCFjMwGdzJ9DIFqqgZsW_NsHhbfCApi8ShN1eYpChhqfhUtM4n02LiJ13DYcuoNQ3CfdbAt44azKoS1FXVX8TXGqzZDrvPvrng&disp=emb&realattid=161ff689fb2cb971f161
虽然这个地址是public的但是无法猜测它的下一张图的地址是什么,比较安全。
所以对于Storage中的图片,需要把图片的地址也变成不可猜测的地址,然后再public就可以了。
网友评论