2010-09-07 65 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

相關問題