anchor.diff:  :hp-tags: Blog, Cloud, Storage, Api, App
   :hp-alt-title: use_storage_service_safely
   
  -做互联网产品绕不开使用存储服务，存取用户的照片、声音、影像等资源是最常见的功能了。你的产品是存储服务的使用者，无论使用云存储服务或是自建存储服务，安全值得你投资和反省，不吃亏。我分享一些经验。
  +做互联网产品绕不开使用存储服务，存取用户的照片、声音、影像等资源是最常见的功能了。你的产品是存储服务的使用者，无论使用云存储服务或是自建存储服务，安全值得你投资和反省，不吃亏。
   
  -=== 使用私有空间存储用户数据
  +我分享一些经验
  +
  +- <<user_data_in_private_bucket,使用私有空间存储用户数据>>
  +- <<ask_server_first,客户端的上传下载先向服务端申请>>
  +- <<no_credential_at_frontend,不要把私钥存在客户端>>
  +- <<use_given_name,不要自己为上传的资源命名>>
  +
  +== 使用私有空间存储用户数据[[user_data_in_private_bucket]]
   
   存储服务通常有公开和私有两种空间。
   
  
positive.code: 私有空间要求你每次都生成URL来存取资源，只要存储服务给你的私钥不泄露，没人能猜到URL是什么。
  存储服务都会设计这样的安全机制来保护私有空间资源，并著文教你使用它，怕的只是你不懂。
  
  === 客户端的上传下载先向服务端申请
  
  上传下载资源的流量不走服务端是普遍共识。
  但从客户端的上传和下载不应抛开服务端，而是应每次跟服务端申请，由服务端授予URL。好处
  
negative.code: image::use_storage_service_safely/chart.png[]
  
  
  == 不要把私钥存在客户端[[no_credential_at_frontend]]
  
  存储服务提供给你的私钥一定要保护，因为算法虽复杂却是公开的，私钥是保证签名有效的唯一手段。
  
  