簡體   English   中英

保護應用程序中的Web服務

[英]Securing the web service in app

我將制作一個將使用我正在開發的Web服務的應用程序(iOS和Android)。 我將使用HTTPS和SSL,以便保護從應用程序發送到服務器的數據。 但是,如何停止“黑客”(從反匯編應用程序的人的生活中)“反匯編” URL所在的源代碼呢?

我不希望其他人創建使用我的數據的應用程序。

我的應用程序的用戶將必須注冊並登錄才能使用。 我已經閱讀了一些有關對用戶進行身份驗證並向其傳遞密鑰的方式(Facebook這樣做的方式)。 但是,這是否意味着“黑客”可以注冊然后使用相同的密鑰? 您是否需要跟蹤每個密鑰的使用情況以查找不規律的使用情況?

服務器技術是Java EE或Scala(Lift)。

第一:在不受您控制的設備(例如iOS和Android設備)上運行的任何設備都沒有100%的安全性。

您可以通過以下幾種方法使“濫用”更加困難:

  • 在有時間限制的成功登錄后發出會話密鑰,因此需要經過一定時間后才能進行新的登錄
  • 為每個通信步驟發出一個交互密鑰,該交互密鑰在一次使用后立即失效
  • 成功登錄后,終止與該登錄之前可能處於活動狀態的相同憑據關聯的任何其他會話
  • “節流閥”用法(根據特定應用程序可能是不可能的)

如果您真的真的想加倍努力,可以發出特定於設備的客戶端證書並使用基於證書的客戶端身份驗證(在SSL標准中定義)-如果看到濫用而對設備無害,則可以使與設備關聯的證書無效其他設備的合法用戶...

這或多或少是不可能的。 您可以使用字節碼混淆處理來提高反編譯的難度,但是任何努力的人都可以看到代碼在做什么。

如果您允許不信任的人訪問數據,那么您唯一可以做的就是

  • 好問(請不要濫用我的數據)
  • 對用戶進行身份驗證,以便您可以監視個人使用情況,並可能應用使用情況或速率限制(如Twitter所做的那樣)
  • 使人們簽署法律協議(除非您的數據/應用對他們非常有價值,否則不可能吸引許多用戶!)

還要考慮是否可以執行更多的服務器端處理,以便將更少的原始數據發送到客戶端。 我不知道您的數據是什么樣的,但是以地圖為例,如果您發送一個預渲染的位圖而不是一些經/緯度矢量數據,那么提取任何有用的內容將更加困難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM