關於登錄或授權頁面的錯誤提示


寫這篇文章是由於最近在產品登錄授權頁面上,到底如何返回錯誤提示引發的一些思考,調研后做下總結。

登錄和授權在現在的互聯網產品中屬於最常用必備的模塊,在互聯網安全形勢嚴峻的今天,其重要性更是不言而喻。如何處理好這個部分,關系到產品在用戶心里的信譽。關於登錄授權的安全性涉及方方面面,本文重點討論的場景是:當登錄或授權失敗時,應該如何返回給用戶錯誤提示。

 

場景及問題

場景具體描述為:

用戶進入登錄頁面,輸入手機號,點擊發送短信驗證碼;用戶收到短信驗證碼后,輸入驗證碼,點擊登錄;校驗信息成功,給予用戶授權,失敗則給予錯誤提示。

問題1:

當用戶輸入手機號后,點擊發送驗證碼時,如果用戶不存在或者不應被授權時,是否應該直接提示錯誤信息,如:用戶不存在,未注冊,手機號已被占用,已綁定等。

問題2:

當用戶收到短信驗證碼已經超時,輸入過期驗證碼或者沒有點擊發送驗證碼,直接輸入錯誤驗證碼時,是否應該提示:驗證碼無效,驗證碼未發送等。

綜合的講,就是是否應當在登錄或授權頁面給予用戶詳細的錯誤提示。

 

調研

首先我去看下主流App是如何做的,調研的有:支付寶,京東,微博,中國移動,摩拜,ofo,首先在手機上退出登錄,然后使用短信驗證碼進行登錄,沒有短信登錄的,使用短信找回密碼功能測試。結果是

問題1:

支付寶,京東,微博將手機號輸入頁面和短信驗證碼頁面分離,並且校驗了用戶手機號是否存在,不存在給予提示。而中國移動,摩拜,ofo,手機號輸入和短信驗證碼在同一頁面,沒有校驗用戶手機號是否存在,而是直接提示短信發送成功。

問題2:

支付寶,京東,微博,中國移動,摩拜,ofo,所有App在短信驗證碼超時或未發送驗證碼時,提示信息不包含驗證碼無效,驗證碼未發送等信息,而只是提示:驗證碼錯誤。錯誤提示與正常情況下已發送驗證碼且驗證碼在有效期時,用戶輸入錯誤驗證碼的提示相同。

 

解惑與總結

原因是什么呢?這么做的目的是為什么呢?我到OWASP找到了答案。其中兩段描述:

An application should respond with a generic error message regardless of whether the user ID or password was incorrect. It should also give no indication to the status of an existing account.

The correct response does not indicate if the user ID or password is the incorrect parameter and hence inferring a valid user ID.

也就是說登錄授權操作的結果,不應該包含或者隱含賬戶的狀態或者處理邏輯的狀態這些信息,而是應該返回一個統一的錯誤提示,這樣做的目的是為了盡量避免受到破解攻擊,攻擊者可以利用上你返回的任何附加信息,對賬戶進行破解。通過用戶手機號驗證用戶是否存在,會存在泄露用戶隱私及系統賬戶信息的風險,比如攻擊者可以通過枚舉,查出系統內全部注冊手機號。以上實例是從短信驗證碼角度考慮的,由於短信驗證碼存在有效期,其實本身安全性還是較高,當系統使用用戶密碼時,采取的策略就必須更加嚴謹。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM