Google App Engine - 上传blob和身份验证

时间:2010-04-27 20:10:28

标签: java google-app-engine blobstore

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

目前要上传blob,app引擎的blob商店服务会创建一个独特的 - 用户可以将blob发布到的时间URL。我的要求是我只 希望经过身份验证/授权的用户在我的应用程序中发布blob。如果包含上传blob的多部分表单的页面在我的应用程序中,我可以实现此目的。

但是,我希望为我的用户提供一个“REST API”来上传他们的blob。虽然上传URL的一次性特性确实减少了使用流氓的可能性,但它仍然可能。

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

谢谢, Keyur

3 个答案:

答案 0 :(得分:1)

正如您所指出的那样,如果您拥有有效的上传网址,则只能上传blob,您只需向授权用户发送有效的上传网址即可。然后,未经授权的用户可以获得上传URL的唯一方法是,如果授权用户将其提供给他们,或者被拦截 - 在任何一种情况下,同样的警告都适用于常规凭证。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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