2012-03-21 67 views
2

我創建了一個與PHP Web服務器通信的Android應用程序。他們都向對方發送JSON。我的應用程序快要完成了,但還有一件事要做:身份驗證。我需要在我的Android應用程序中使用PHP會話嗎?

由於用戶的用戶名和密碼將存儲在Android SharedPreferences中,是否需要使用PHP會話,因爲用戶在每次請求時都不需要輸入用戶名/密碼?

由於我可以在每個請求的HTTP POST標頭中發送用戶名和密碼,並且我將使用SSL,這是否足夠?我想我可以在名爲'random'的頭文件中添加一個額外的字段,它只是添加一個隨機值,僅用作salt,以便加密的SSL有效負載每次都會有所不同。

我不想使用會話的原因是我的Android應用程序要麼必須處理cookie,要麼管理會話ID的存儲。

如果有一些嚴重的缺點使用我的方法,那麼我很樂意使用會話。

回答

0

我相信你會很好,現在你有什麼。只要您確保用戶信息安全傳輸。鹽是一個好主意。這實際上取決於你想要的安全程度。

1

就我個人而言,我反對每次在請求中發送用戶名和密碼。你可以做的一件事是在登錄時生成一個唯一的ID,並將其存儲在服務器上的數據庫中,然後通過它而不是用戶名和密碼。

+0

所以有點像一個永久的會話ID? – jtnire 2012-03-22 00:04:47

0

在每個請求中發送帳戶憑證是非常糟糕的做法。 我認爲使用Google OAuth2 API的更好的方式 - 它是非常簡單,比本地帳戶數據庫更安全的。你有沒有考慮過這個選擇?

+0

爲什麼不好的做法,如果通信是加密的? – jtnire 2012-03-22 00:18:12

+0

用戶不能每次都記住SSL連接。 Android設備在有限功能UI中的缺點。它使得MITM的攻擊成爲可能。 – Vladimir 2012-03-22 00:30:37

+0

抱歉,您可以解釋您的意思是「用戶無法記住每次SSL連接」。使用無效/自簽名證書時,我的Android應用程序會引發異常。 – jtnire 2012-03-22 00:41:29

0

我認爲谷歌已經給了這個很多想法,所以做一些類似於他們做的事情不會是一個壞主意。如果你看看他們的方式做他們的

  • 登錄過程,即https://accounts.google.com/o/oauth2/auth

,尤其是他們的

  • 令牌freshining,即https://accounts.google.com/o/oauth2/token

它會覺得像矯枉過正,但你可能會想出一些對你自己的實施有價值的想法ñ。

編輯:哎呀,差點忘了文件鏈接:https://developers.google.com/accounts/docs/OAuth2

相關問題