【发布时间】:2013-06-13 04:25:05
【问题描述】:
我已经实现了appengine docs 中提到的通用 blob 服务处理程序。只要您知道该 blob 的密钥字符串,该处理程序就会为您提供任何 blob。我正在使用它来轻松编写客户端可以用来下载其文件的 URL。如果客户端 A 检查 URL 以下载他们的文件并找到他们的 blob 密钥(即1CX2kh468IDYKGcDUiq5c69u8BRXBtKBYcIaJkmSbSa4QY096gGVaYCZJjGZUpDz == str(BlobKey)),他们能否以某种方式对该密钥进行逆向工程并轻松构建另一个可用于下载客户端 B 文件的密钥?或者密钥是否添加了随机组件?
作为参考,有this note 关于str(db.Key),这就是我提出的问题:
注意:密钥的字符串表示看起来很神秘,但不是 加密!它可以转换回原始密钥数据,包括种类和 标识符。如果您不想将此数据公开给您的用户(并且 让他们轻松猜测其他实体的密钥),然后加密这些 字符串或使用其他东西。
我正在创建这样的文件,它没有指定 filename 参数,所以我认为问题归结为,create() 如何在未指定时“选择”filename?我想我可以生成一个随机文件名并将其传递到这里,以确保这是安全的。
file_name = files.blobstore.create(mime_type='application/octet-stream')
【问题讨论】:
标签: google-app-engine blobstore