簡體   English   中英

如何安全地從僅使用Facebook登錄的應用程序提交分數?

[英]How to submit scores securely from app that uses only facebook login?

我們的Android應用程序只有Facebook登錄

這是服務器中發生的事情:

使用正文中的facebook用戶訪問令牌發送POST請求時,將創建用戶。

每當用戶通過POST請求創建時,都會生成api令牌並作為響應發送,如下所示:

{"message":"User Successfully Created","api_token":"ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo"}

我這樣做是因為服務器中生成api令牌存儲在Android應用程序的本地存儲中 ,需要進行其他請求。

現在,如果用戶已經存在於服務器中,則響應將是

{"message":"User Already Exists!!","api_token":"ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo"}

這是用戶刪除應用程序並再次安裝。

現在,要提交分數,將發送PATCH請求:

頭:

Content-Type:application/x-www-form-urlencoded
api_token:ACITyBKf0jKrfqOFumTMcaEEJ8jU151crRdESMPmBj8zbeENslULHfNXlKeo
fb_id:xxxxxxxxxx

身體:

distance:2
golds:19
xp:23

(注:我用郵遞員測試了上述要求)

現在,問題是我發現了一個漏洞。

一個人可以隨時找到他們的Facebook用戶訪問令牌和他們的Facebook ID。 因此,如果他們使用該用戶訪問令牌發出POST請求,他們將收到api_token(在“User Already Exists !!”響應中)。 一旦他們擁有api_token和fb_id,他們就可以發出PATCH請求,將他們的分數修改為他們想要的任何內容。

我究竟做錯了什么? 如何保護我的服務器不被這樣的黑客攻擊?

請幫我。 我是api設計的初學者。

謝謝

如果他們的API令牌在應用程序中完全可用,那可能是件壞事。 如果它們在應用程序中無法使用它們,說它們只是偽造應用程序內POST請求並檢索原始數據,那么它們可能正在嘗試破解或測試系統。

如果是這種情況,可能首先通過POST發送未加密的API密鑰是一個壞主意。 如果他們的API密鑰完全是他們需要開始為您的系統做壞事,為什么要首先給它們?

因為您的應用需要它來記住它們。 這樣的事情怎么樣:

新用戶,服務器md5散列其API密鑰並將其發送給它們進行存儲。 現有用戶,服務器md5散列其api密鑰並將其發送給它們進行存儲(如果需要)發生官方現有分數更改:app re-md5散列已經散列的api密鑰,使用PATCH請求發送該密鑰。 服務器具有帶有雙重哈希api密鑰的數據庫,它可以找到你的密鑰,並將你識別為用戶,並且通常會從那里繼續運行。

暫無
暫無

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

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