0

(我尝试在 GAE 论坛上问这个问题,但没有得到答案,所以我在这里尝试。)

目前,为了上传 Blob,应用引擎的 Blob 存储服务会创建一个唯一的一次性 URL,用户可以将 Blob 发布到该 URL。我的要求是我只希望经过身份验证/授权的用户在我的应用程序中发布 blob。如果包含用于上传 Blob 的多部分表单的页面在我的应用程序中,我目前可以实现这一点。

但是,我希望为我的用户提供一个“REST API”来上传他们的 blob。虽然上传 URL 的一次性性质确实减少了恶意使用的机会,但仍有可能。

我想知道这里的应用引擎团队中是否有人可以考虑开发人员可以注册上传侦听器的功能。(或者如果已经有办法,我会全神贯注)。一个标准的 servlet 过滤器也可以完成这项工作。这将使我们有机会在请求被转发到 blob 存储服务之前对请求进行身份验证/验证/装饰。

谢谢, 凯尔

4

3 回答 3

1

正如您所指出的,只有在您拥有有效的上传 URL 时才能上传 Blob,因此您只需向授权用户发出有效的上传 URL。未经授权的用户可以获取上传 URL 的唯一方法是授权用户将其提供给他们,或者它被拦截 - 在任何一种情况下,相同的警告都将适用于常规凭据。

在任何情况下,仍然可以在上传后检查用户的凭据,此时如果您不满意,可以立即删除 blob。如果可以定期上传未经授权的 blob,这可能会导致拒绝服务漏洞,但由于我上面提到的分发编码 URL 的限制,这仅可能适用于,例如,用户的访问权限是在您为他们生成上传 URL 后撤销。

于 2010-04-28T09:20:39.363 回答
0

现在,您可以使用 Blobstore API 上传文件,请在此处查看:http ://code.google.com/appengine/docs/java/blobstore/overview.html

于 2012-02-28T04:15:57.480 回答
0

我不确定它是否会起作用(即 GAE 可能不会让你这样做),但是包装 /_ah/upload 模式的 servlet 过滤器可以首先检查 POST 是否来自与经过身份验证的客户端相同的 IP 地址。

于 2010-06-15T05:10:01.617 回答