我需要發跟進到我的服務器通過POST存儲:什麼是從iPhone應用程序保護用戶密碼的最佳方式 - > PHP - > MySQL?
&用戶名= XXXX &密碼= ZZZZZ
我應該在發送之前進行加密呢?或者只是通過HTTPS(SSL)發送到我的PHP頁面?
在PHP頁面上,我應該執行加密以將其保存到MySQL服務器上嗎?
這裏需要一些幫助,以瞭解什麼是最好的iPhone應用程序 - > PHP - > MySQL的方式來做到這一點。
我需要發跟進到我的服務器通過POST存儲:什麼是從iPhone應用程序保護用戶密碼的最佳方式 - > PHP - > MySQL?
&用戶名= XXXX &密碼= ZZZZZ
我應該在發送之前進行加密呢?或者只是通過HTTPS(SSL)發送到我的PHP頁面?
在PHP頁面上,我應該執行加密以將其保存到MySQL服務器上嗎?
這裏需要一些幫助,以瞭解什麼是最好的iPhone應用程序 - > PHP - > MySQL的方式來做到這一點。
通過HTTPS發送它應該適用於iPhone應用程序和PHP之間的通信。你應該儘快使用一個好的密碼散列算法來散列密碼。
如果你不熟悉好的密碼散列的做法,你可能會發現這個有用: How do you use bcrypt for hashing passwords in PHP?
您可以使用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."'");
HTTPS/SSL應該是不夠的,如果你只是想在傳輸過程中保護您的數據。很明顯,你可能還需要在MySQL數據庫中存儲加密值。在這種情況下,您還應該在執行sql查詢之前加密您的憑證。
HTTPS應足以保護數據的途中,正如其他人說。在服務器端,您不應該以任何可逆形式存儲密碼(除非由於某種原因您需要明文,例如將其傳遞給第三方)。我會建議使用鹽漬加密哈希。
本質上,您所做的是:當用戶設置密碼時,您將生成一個新的隨機字符串(鹽),然後將密碼存儲爲散列(鹽+密碼)的結果。這個哈希應該是一個強大的加密函數(現在我會推薦SHA-256或類似的)。通過這種方式,即使您的服務器遭到入侵,也無法檢索到用戶的明文密碼。
當用戶提交密碼時,您可以簡單地再次計算散列(salt + password)並檢查結果是否與存儲在數據庫中的結果相匹配。
'HTTPS' /'SSL'應該沒問題。如果你想確認,可能需要驗證你的證書。 – Wrikken
如果你接受更多的回答以前的問題,你會得到更好的回覆率,15%是相當低的... – MCannon