2011-07-26 54 views
1

我需要發跟進到我的服務器通過POST存儲:什麼是從iPhone應用程序保護用戶密碼的最佳方式 - > PHP - > MySQL?

&用戶名= XXXX &密碼= ZZZZZ

我應該在發送之前進行加密呢?或者只是通過HTTPS(SSL)發送到我的PHP頁面?

在PHP頁面上,我應該執行加密以將其保存到MySQL服務器上嗎?

這裏需要一些幫助,以瞭解什麼是最好的iPhone應用程序 - > PHP - > MySQL的方式來做到這一點。

+2

'HTTPS' /'SSL'應該沒問題。如果你想確認,可能需要驗證你的證書。 – Wrikken

+0

如果你接受更多的回答以前的問題,你會得到更好的回覆率,15%是相當低的... – MCannon

回答

1

通過HTTPS發送它應該適用於iPhone應用程序和PHP之間的通信。你應該儘快使用一個好的密碼散列算法來散列密碼。

如果你不熟悉好的密碼散列的做法,你可能會發現這個有用: How do you use bcrypt for hashing passwords in PHP?

0

您可以使用md5()加密密碼或創建自己的加密/解密函數。

這裏是例子

從客戶端

$password = md5('password'); 

要與數據庫檢查

//security check 
$user = mysql_real_escape_string($_POST['username']); 

mysql_query("SELECT user_name, email FROM users WHERE username='".$user."' AND MD5(password)='".$password."'"); 
+2

請!這不安全。在你的例子中,我竊取你的密碼或者它的md5哈希值並沒有什麼不同。使用HTTPS,你會沒事的! – middus

+0

此外,你忘了逃避'$密碼'(轉義不是安全檢查,順便說一句)。這個解決方案不會。 – middus

0

HTTPS/SSL應該是不夠的,如果你只是想在傳輸過程中保護您的數據。很明顯,你可能還需要在MySQL數據庫中存儲加密值。在這種情況下,您還應該在執行sql查詢之前加密您的憑證。

0

HTTPS應足以保護數據的途中,正如其他人說。在服務器端,您不應該以任何可逆形式存儲密碼(除非由於某種原因您需要明文,例如將其傳遞給第三方)。我會建議使用鹽漬加密哈希。

本質上,您所做的是:當用戶設置密碼時,您將生成一個新的隨機字符串(),然後將密碼存儲爲散列(鹽+密碼)的結果。這個哈希應該是一個強大的加密函數(現在我會推薦SHA-256或類似的)。通過這種方式,即使您的服務器遭到入侵,也無法檢索到用戶的明文密碼。

當用戶提交密碼時,您可以簡單地再次計算散列(salt + password)並檢查結果是否與存儲在數據庫中的結果相匹配。

相關問題