保护在App Engine上运行的Web服务

时间:2010-09-07 07:16:05

标签: web-services security google-app-engine rest

我们的应用程序包括在App Engine和Flash客户端上运行的REST Web服务。我们需要确保只有我们的客户端可以向Web服务发出请求并防止重放攻击等情况。

我不是安全专家(到目前为止),所以我想对我提出的安全方案提出一些建议。

系统将使用共享密钥。服务器和客户端将共享相同的密钥。我知道如果密钥暴露出来(例如通过反向工程设计flash客户端),整个系统就会崩溃。最初,客户端向服务器发出登录请求。服务器以挑战(随机数)响应。客户端发回挑战的HMAC-SHA1摘要。如果摘要与服务器匹配,它将发回时间戳。客户端将在消息(和消息摘要 - HMAC-SHA1)中使用此时间戳来缓解重放攻击。

这是真的。是否有意义?服务器查看消息时,时间戳的可容忍时间增量是多少(我在想30秒左右)?还有其他意见吗?

编辑:哦,什么能成为生成密钥的好方法?

感谢。

干杯, 亚历

1 个答案:

答案 0 :(得分:1)

  

我们需要确保只有我们的客户才能向Web服务发出请求

只有一种安全的方法可以做 - 请让最终用户输入用户名/密码,并通过https引导所有内容。

如您所述,共享秘密毫无意义。从flash文件中提取它是微不足道的。当你知道它被打破时,为什么还要打扰这条路呢?