我們有一項服務,用戶可以註冊。此流程受reCAPTCHA保護,以防止自動註冊。問題是,在移動設備上,reCAPTCHA並不方便。因此我們決定註冊API也會接受一些特殊的令牌而不是reCAPTCHA響應。移動設備上的驗證碼替換
現在的問題是如何實現這個令牌。我們的第一種方法是爲移動應用程序提供一些不變的祕密,這些祕密將作爲令牌發送到服務器。但是,如果黑客將請求重定向到他的服務器(通過更新API域的DNS記錄並將他的證書安裝爲受信任的移動設備),則可以揭示此祕密。
現在我們最後的方法是在用戶名+密碼上計算令牌爲HMAC-SHA1(我們是否需要在這裏分割 - 也許只是爲了使輸入足夠長?)。用戶名將從註冊輸入中獲取。然後服務器將通過驗證散列來授權它。在他的情況下,可能會進行重播攻擊,但這是可以的,因爲重複的用戶名將被拒絕。
這種方法是否正確?也許在移動設備上還有其他替代方案可用於驗證碼?
也可以從iOS(ipa文件)中獲取和逆向工程應用程序,因爲它將託管在Appstore中並提取密鑰(和祕密)?
在android的情況下,這是可能的 - 有沒有辦法來防止它?