从 public 网站上传文件到个人 Dropbox 而不暴露私钥
Upload file to personal Dropbox from public website without exposing private key
我收到要在我的网站上处理的图像,我想省略上传到本地服务器并通过从 Web 浏览器直接上传到 Dropbox 进一步添加到 Dropbox 文件夹。
Dropbox API 非常简单,但有一个问题 - 我需要向最终用户公开 API 密钥,并且该密钥允许从我的帐户下载所有图片。
然后如果我使用 Dropbox API - 一个用户可以下载其他人上传的图片,这是不可接受的情况。
有没有办法通过向网站最终用户公开完全访问 API 密钥来绕过限制?
很遗憾,不可以,为了通过 Dropbox API 直接上传到 Dropbox,客户端需要访问令牌。此外,Dropbox API 不提供仅上传权限。
从根本上说,客户端无法保密,因此任何存在于客户端(在本例中为浏览器中)的访问令牌都可以被提取和滥用。
编辑:
Dropbox API 现在提供一些新功能,可能对这里有用:
A) Dropbox API 现在提供“作用域”,您可以使用它来将应用程序或访问令牌配置为仅限一组有限的功能,例如写入但不能读取文件的能力。
您可以在我们的博客 post 中找到有关此版本的更多信息:
https://dropbox.tech/developers/now-available--scoped-apps-and-enhanced-permissions
B) Dropbox API 现在提供 /2/files/get_temporary_upload_link 端点,可用于获取客户端可以 POST 进入的 URL为了上传到没有访问令牌的 Dropbox 帐户:
https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_upload_link
我收到要在我的网站上处理的图像,我想省略上传到本地服务器并通过从 Web 浏览器直接上传到 Dropbox 进一步添加到 Dropbox 文件夹。
Dropbox API 非常简单,但有一个问题 - 我需要向最终用户公开 API 密钥,并且该密钥允许从我的帐户下载所有图片。 然后如果我使用 Dropbox API - 一个用户可以下载其他人上传的图片,这是不可接受的情况。
有没有办法通过向网站最终用户公开完全访问 API 密钥来绕过限制?
很遗憾,不可以,为了通过 Dropbox API 直接上传到 Dropbox,客户端需要访问令牌。此外,Dropbox API 不提供仅上传权限。
从根本上说,客户端无法保密,因此任何存在于客户端(在本例中为浏览器中)的访问令牌都可以被提取和滥用。
编辑: Dropbox API 现在提供一些新功能,可能对这里有用:
A) Dropbox API 现在提供“作用域”,您可以使用它来将应用程序或访问令牌配置为仅限一组有限的功能,例如写入但不能读取文件的能力。
您可以在我们的博客 post 中找到有关此版本的更多信息:
https://dropbox.tech/developers/now-available--scoped-apps-and-enhanced-permissions
B) Dropbox API 现在提供 /2/files/get_temporary_upload_link 端点,可用于获取客户端可以 POST 进入的 URL为了上传到没有访问令牌的 Dropbox 帐户:
https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_upload_link