在iOS應用程式中登入系統使用的標準程式是什麼?
我正在建立一個應用程式和一個專案的網站,我已經走了,但我不知道我應該做什麼關於登入.這不是一個“我是一個noob,我想要一個應用程式與登入” – 問題.我在網路,資料庫和應用程式開發方面有一定的經驗,但是除了應用程式模板之外,我從來沒有真正觸及安全主題.
我想象的是一個簡單的登入系統,如Skype,Facebook,NetFlix,真正的任何應用程式,你可以登入,也有一個網站登入.
我的問題的一部分是為了程序的安全.我最初的想法是,乾淨的文字中的密碼不應該通過網際網路傳送,這使我相信在登入時,密碼應該在手機上以及網站上進行雜湊/加密.時間雜湊/加密之前,只是通過使用sha1和md5“轉換”文字.這樣做的正確方法是什麼?根據我目前的知識,我假設如果我使用md5加密密碼,任何人都可以使用md5進行解密,但是我可以使用SALT(?)或某種形式來更改金鑰. “大男孩”是怎麼做的,還是有一個我不知道的祕密通道?
現在真正的問題..我該如何安全地儲存登入?
我曾經嘗試過:當在Xcode中進行“測試專案”時,我只建立一個使用者名稱為使用者名稱的欄位.當通過輸入使用者名稱和密碼“登入”時,我只是向我的.php頁面傳送一個POST方法HTTP請求,該檔案只是執行一個SELECT * FROM User WHERE Username =’$_POST [‘username’]’AND Password =’$_POST [‘password’]’;如果資料庫返回一行,那麼密碼是正確的,並且該頁面可以以JSON或其他方式列印使用者.當裝置成功登入時,我將應用程式中的使用者物件轉換為NSData *,並使用NSKeyedArchiver和NSKeyedUnarchiver儲存和載入使用者名稱(以及潛在的UserID,E-mail,Address等) ,再也不要認證.如果使用者點選“登出”,我將擦除“歸檔”.這有效,但我覺得這不是一個特別安全的方式.如果是這樣,為什麼呢?
(我們的後端目前是Google的App Engine(java),它支援OAuth,有些是推薦這個,但是我們找不到任何適合我們的計劃與自定義使用者有關的文件)
密碼傳輸
確保這一點的簡單方法是通過SSL傳送密碼.如果您設定了SSL證書並通過https進行所有身份驗證,則所有來回的通訊都將由傳輸層進行加密.注意 –md5不是加密演算法,它是一個弱雜湊演算法 – 不要將其用於安全性.
儲存登入
您的密碼應作為鹽化雜湊儲存在資料庫中(隨機鹽,具有防衝突雜湊功能,如SHA256).不要將密碼的明文版本儲存在任何地方.如果您在伺服器端使用PHP,可以使用新的password_hash()函式或crypt()來生成和比較您的鹽化雜湊值.
如果您通過SSL安全地進行通訊,則應該能夠使用Web伺服器的會話功能來跟蹤登入(例如$_SESSION [‘user_id’] = …).
http://stackoverflow.com/questions/21103980/what-is-the-standard-procedure-used-for-login-systems-in-ios-apps