2014-12-05 81 views
3

因此,我爲我的(JavaScript)Web應用程序提供了一個Web API。該應用程序封裝在科爾多瓦,並分佈在iOS和Android上。如何驗證請求來自特定的Web應用程序

我寧願保持數據訪問受限(保持第三方不使用我的API)。但是,我會如何做到這一點?我不需要(也不希望)用戶創建帳戶,因此應用程序本身必須以某種方式驗證其應用程序發送請求,而不是其他人。

但是如何?

+0

讓您的應用程序生成服務器可以理解的令牌 - 更改每個用戶等的令牌並對其進行加密 – mplungjan 2014-12-05 12:24:43

+0

這很容易實現,但如果有人通過USB將手機插入其筆記本電腦/計算機並反編譯文件,找到生成令牌的(修剪和混淆的)javascript文件,這不會令人難以重構,所以感覺我需要更多的東西 – 2014-12-05 12:28:02

+0

也許生成特定於手機的令牌? – mplungjan 2014-12-05 12:40:54

回答

2

我寧願保持數據訪問有限(使第三方不使用我的API)。但是,我會如何做到這一點?

...

應用程序本身必須以某種方式驗證其應用程序發送請求,而不是別人。

...

但是怎麼樣?

你所要求的是不可能的。這也是解決問題的錯誤。

延伸閱讀:Client Authenticity is not the Server's Problem

0

你不能100%肯定,但你可以做反向工程師爲它工作。

  • 使用TLS AO不能easilly用嗅探器看你的協議
  • 不只是使用一個API密鑰,使密鑰通過應用程序與實際的用戶數據一起傳播的各種值的函數
  • 考慮使用由服務器發送的API密鑰功能,所以一切myateriously減免部分TLS密鑰,如果他們MITM的TLS
  • 使用無意義的字段名在API經常
  • 推了更新,改變API系統
相關問題