鉴权算法只包含bucket一级,而不包括本次操作的指定资源。因此一个签名可以在其有效期内任意使用。比如生成一个多次签名,如果被他人获取,可以用来向这个bucket任意上传、下载文件。虽然可以通过https可以保证一定的安全性,但是Web还是可以查看到服务端返回的签名信息。而且现在很多网站也不一定会用https传输。同时,由于API中使用POST请求+自定义参数的方式,而不是使用语义更为清晰细化的PUT、DELETE请求,也使得签名的有效范围太大。比如删除操作需要使用单次有效签名,如果从请求方法和资源上可以细化,就可以不使用这种单次有效签名的方式。比如很多公有云存储的普遍做法是在鉴权算法中包含此次操作的动作和具体对象。对于删除操作签名串中包含DELETE请求方法、/bucket/a.jpg这样的特定资源。即使一个删除的签名多次使用也不会有问题。
相似问题