2011-08-04 51 views
1

我正在寫一個使用Facebook登錄的iPhone應用程序。當用戶登錄fb訪問令牌時,電子郵件地址通過Web服務發送到後端數據庫。現在的問題是,當訪問令牌被facebook更改時,我將如何識別它。有人可以通過假裝成爲用戶的Web服務向我的數據庫發送類似的數據,並在我的數據庫中更改訪問令牌。我必須以某種方式驗證來自移動設備的Web服務呼叫。防止不必要的訪問後臺系統與Facebook登錄

我該如何防止這種情況下沒有給用戶密碼?

謝謝。

回答

0

有沒有簡單或真正密閉的解決方案。

但是,首先與後端的通信至少應該使用SSL加密,以儘量減少中間人攻擊的風險。

一種方法是在第一次運行時生成唯一標識符,並在服務器上使用相同的算法進行驗證,從而爲您的後端創建自己的訪問令牌。然而,你的算法很弱或者任何反編譯你的應用程序的人可以找出你如何生成你的標識符。

你應該至少使用SHA加密,現在md5開始變弱。如果你的代碼非常簡單,請不要在代碼中使用它;

String salt = "twsg23s¤#"; //a random generated string (must be the same on the server and client 
String token = sha1(sha1(facebookid + salt) + salt); //this will be your token 

然後生成相同的令牌服務器端,並將客戶端令牌與servertoken進行比較。

我必須強調:您的鹽是否泄露和/或您的算法較弱,您的系統中會出現巨大的安全漏洞。