2012-05-02 25 views
-2

我正在爲客戶開發PHP中的郵件客戶端,他們希望能夠處理來自這個客戶端的所有各種電子郵件帳戶。我應該如何將Gmail身份驗證存儲在我的應用程序中?

用戶不必在每次他想使用該服務時都輸入所有密碼,那就是我的問題。有沒有辦法通過Gmail檢索和發送郵件,而無需向郵件帳戶輸入密碼?有沒有其他的方法?還是必須將密碼保存在我的數據庫中,並使用「隱藏」密鑰進行解密?

+0

首先,[你有什麼嘗試?](http://whathaveyoutried.com)第二,你不能解密一個加密的字符串使用任何首選的散列方法的密碼。解密字符串的唯一方法是如果您使用或創建您自己的解密/加密功能(大多數個人加密方法使用base64),但這不是推薦的密碼方法,因爲它們通常很容易被破壞。 –

+0

那麼我要去試試AES_ENCRYPT()(mysql函數)。但我仍然需要保存加密密鑰,並且我認爲以這種方式保存密碼存在風險。我可能會將密碼保存在表中,並使用某種算法將密碼鏈接到郵件帳戶。但是這也可能是一個不好的解決方法? – user1195745

+0

是的。目前的散列方法的全部目的是防止包括開發人員在內的任何人對這些密碼進行散列。您需要爲您的客戶提供一種產品,讓他們感到安全的輸入密碼。採取Drknezz的建議,並嘗試谷歌提供的令牌方法,並盡你所能地使用。雖然聽起來好像你可能在Hotmail上有更艱難的時間(與_any_微軟產品一樣) –

回答

2

https://developers.google.com/google-apps/gmail/閱讀OAuth部分。

OAuth爲您提供了一個令牌,而不是密碼。即使用戶更改他的Gmail密碼,該令牌也會允許您訪問他的收件箱等。

至於Hotmail ......我認爲沒有OAuth API在那裏,可悲的是。

以防萬一閱讀: 與電子郵件服務器http://msdn.microsoft.com/en-us/library/live/hh826535

+0

謝謝! 這聽起來像一個很好的解決方案,太糟糕了,Hotmail不支持它。我會試一試! – user1195745

0

認證就需要你通過密碼,所以你說得對地下室並將其存儲在數據庫解密機制(密)你應用。如果有人獲得您的數據,這將防止電子郵件密碼可讀,但您需要小心應用程序如何存儲密鑰解密。這裏有一些擴展在PHP的密碼http://www.php.net/manual/en/refs.crypto.php

+0

啊!對於OAuth建議+1,只要電子郵件具有此種身份驗證形式即可生效。它更好,因爲它授權USER和APP。請注意,您必須在數據庫中存儲與用戶關聯的令牌(這意味着用戶授權您的應用程序來模擬他)以及您的應用程序。你需要一個消費者(祕密)密鑰(它將你的應用程序作爲有效的客戶端) – mvaldes

相關問題