2010-09-07 42 views
2

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

我不是安全专家(到目前为止),所以我想要一些建议与我提出的安全计划。

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

Baiscally这就是它。是否有意义?当服务器查看一条消息时(我正在考虑大约30秒钟的某个地方),可以忍受的时间增量是什么?还有其他意见吗?

编辑:哦,什么会产生一个很好的方法来生成密钥?

谢谢。

干杯, 亚历

回答

1

我们必须确保只有我们的客户可以要求网络服务

只有一做就是安全的方式 - 让您的最终用户输入用户名/密码,并通过https传送所有内容。

正如您已经描述的那样,共享秘密是毫无意义的。从Flash文件中提取它是微不足道的。当你知道它被打破时,为什么即使在那条路上走下去也是如此?

+0

我们总是可以对swf文件进行混淆/加密。除此之外,我不确定在应用程序引擎上与https有什么交易。 – Alex 2010-09-07 08:04:35

+1

混淆只是一个小小的不便,它不会让某人离开太久。 GAE支持https,但不支持您的自定义域。我听说他们计划尽快在自定义域名上支持它,但这只是葡萄藤。有关详情,请参阅此问题 - http://code.google.com/p/googleappengine/issues/detail?id=792 – 2010-09-07 09:03:08

相关问题