2010-04-27 61 views
0

(我试着问这个在GAE上的论坛,但没有得到答案所以我在这里想它)谷歌应用程序引擎 - 上传斑点和认证

目前上传的斑点,在App Engine的团块存储服务创造一个唯一的 - 用户可以将blob发布到的时间URL。我的要求是,我只有 希望通过身份验证/授权的用户在我的应用程序中发布blob。如果包含multipart窗体上传blob的页面在我的应用程序中,我可以实现这一点。

但是,我正在为我的用户提供一个“REST API”来上传他们的斑点。尽管上传URL的一次性质确实减少了流氓使用的可能性,但它仍然是可能的。

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

感谢, Keyur

+0

听起来这是一个功能要求。尝试在Google代码网站上填写新问题表单。确保您指定它是“功能请求”而不是“缺陷” - http://code.google.com/p/googleappengine/issues/entry – 2010-04-27 20:27:24

+0

谢谢。提交了一项新功能请求:http://code.google.com/p/googleappengine/issues/detail?id=3160 – Keyur 2010-04-27 21:44:15

回答

1

因为,正如你指出,这是唯一可能的,如果你有一个有效的上传网址上传斑点,你可以简单地只给授权用户发出有效的上传的URL。未经授权的用户然后才能获取上传URL的唯一方法是,如果授权用户将其提供给他们或被截取 - 并且在任何情况下,同样的警告将适用于常规凭证。

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

+0

谢谢,Nick。我有点希望这不是答案,但我认为我会忍受它:) 正如你所提到的,是的,我会发送上传URL到认证用户。但是,如果经过身份验证的用户本人是将其生成的URL发布给其他人的流氓用户,那么我们遇到了问题。我可以像后面提到的那样在后期处理中删除blob,但是我希望能够在blob商店中保存它之前能否拒绝它。 – Keyur 2010-04-28 17:12:49

+0

如果经过身份验证的用户是'流氓'并将URL发给其他人,您如何确定他是否这样做?他可以轻松地发放他的凭证或他的登录cookie。 – 2010-04-28 22:24:38

+0

是的,他可以发放他的凭证,但如果我可以验证上传网址,上传至少会以他的名义发布。今天,一旦他获得了上传URL,他就可以匿名上传斑点。 – Keyur 2010-04-30 00:38:56

0

我不知道是否会工作(即GAE可能不会让你这样做),但一个Servlet过滤器,其包裹/ _ah /上传模式可以先检查文章是否来自同一IP地址的认证来了客户。现在