2012-10-21 119 views
0

的情況是:Javascript客戶端身份驗證(使用SSL,無OAuth2)?

我有一個Web API,它是由兩個客戶端訪問:

  • Web App的Javascript編寫的,這是精縮
  • iOS應用

SSL是託管API的服務器上的所有設置,並且它工作正常。 API沒有User Auth,因爲它是一種基於位置的搜索應用程序。

我想確保只有web應用程序和iPhone客戶端能夠實際向API發出請求。對於iPhone客戶端來說很簡單 - 服務器和應用程序之間的共享祕密就可以實現,並且它使用SSL進行加密,所以我們不擔心有人在監視它。

但是,對於Web應用程序,相同的解決方案將無法正常工作。我不能在代碼中留下一個字符串,即使它是在那裏加密的,這是所有人都需要的。

基本上,我正在尋找一個很好的解決方案來解決這個問題。我只是想確保它只保留給被允許使用它的客戶,但我不確定如果不去實施OAuth,我認爲這可能是矯枉過正的。有任何想法嗎?

謝謝! 丹

回答

2

它不能完成。即使與oauth。即使假設你的iOS應用程序是安全的,也是錯誤的:它可以被反編譯。在客戶端上運行的任何代碼都可能被篡改,並且不能被信任爲他所說的他。

唯一的問題是:您提供的API是否足夠有價值,以及有人想要通過何種方式來破解它。你想爲任何想要破解它的人制作它多麼困難。

iOS版本確實比javascript版本更安全。在web應用程序中,您可以混淆您的代碼以使其更難以破解。你可以(如果你不打算在iOS上使用它)使用java或flash來進一步隱藏你的簽名代碼(HMAC-簽署你的請求,不要只是發送一個共享密鑰,你可能認爲SSL是安全的,但是在URL被加密之前有一段時間)。

方式的「大傢伙」的解決方法是:

  • 不管你建立,假設有人能夠破解它(如:使用你的API用於其他目的比你意) 。
  • 想想這真的有多糟糕(注意:他們無法建立一個業務;這將是太容易受到訴訟)。如果孤獨的狼使用你的API,它真的是世界末日嗎?
  • 如果你關心孤獨的狼,儘可能地使它變得難以忍受(但說實話,僅僅從孤獨的狼身上花費一些錢,而不是花費2個開發者月份便宜?)
  • 如果有人對你的API有嚴重的興趣,試着與黑客達成諒解(比如我喜歡Spotify如何反應的方式)基本上他們說:「嘿,如果你不發佈任何使它真的很容易盜取我們的音樂或規避我們的業務模式,我們不會過於努力地阻止你「)
+0

很好的建議。謝謝,克勞德:)我以前從來沒有寫過API。 我會牢記這一點。我認爲我最好的選擇就是建立一些基本的反垃圾郵件措施,例如阻止相同的IP每隔10秒發出一次以上的請求。 – basicallydan