[英]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.