2011-08-04 50 views
4

我建立我的客戶,併爲這部分網站創建他們電子郵件地址,FTP帳戶,Google分析帳戶等等等等。在數據庫中存儲用戶/客戶端密碼?需要你的意見

隨着即時得到新的客戶,它變得非常難以管理所有那個信息。所以我決定構建我自己的小PHP,MySQL驅動的管理面板,我可以存儲必要的數據。

客戶經常問我是否可以重新發送用戶名和密碼。目前,這些數據存儲在Excel表格中,該表格被加密並存儲在TrueCrypt容器中。由於我工作的性質,將這個容器放在U盤上並隨身攜帶,然後將其插入某臺計算機,並輸入所需的密碼以解密密碼(只需考慮鍵盤記錄器)非常煩人。

無論如何,爲了減少長話短說,我來到了必須把所有這些都放到互聯網上的地步。最大的問題是如何保護FTP,電子郵件帳戶等密碼。使用散列函數不是一種選擇,因爲我必須重新發送密碼(我已經試圖向客戶解釋它不安全,我保留所有的信息,但他們不我不想聽我說:))。 這讓我只是加密/解密選項(或我錯了),我不喜歡。

最後我的問題是:你對我有什麼建議嗎?在我的情況下你會做什麼?除了登錄表單之外,您如何選擇使用.htpasswd來保護目錄?

謝謝!

+0

那麼,無論你做什麼,如果你擔心被攔截,請在你計劃保存它的網站上使用SSL。 – Devin

+4

當我的客戶忘記密碼時,我會幫助他們從任何相關服務中申請新密碼。在可能的情況下,我一定不要知道他們的密碼。我知道這並不完全有幫助,但考慮到某些客戶端可能會有所幫助,但它通常有助於解釋通常情況下密碼無法恢復。 – Brad

+0

@Devin,脫軌,SSL只確保客戶端到服務器的數據在加密的安全通道中傳輸,但不能保證您的系統不會受到危害。 – Kumar

回答

6

如果您已經重新發送用戶名/密碼,那麼沒有理由不能發送新密碼......這可以讓您使用散列函數存儲密碼,繞過所有「可能的zomg」解密「的擔憂。

我不知道以加密形式存儲用戶名是否會有很多安全性,因爲用戶名本身是無用的。

+1

如果在電子表格中查找舊密碼已經太耗時了,那麼我懷疑他有時間去訪問每個Web服務並要求更改密碼。 –

+1

當然,在某些時候,你必須告訴客戶,他們應該投資一兩個後貼在他們的顯示器旁邊。幫助客戶是一回事,完全是沖洗馬桶併爲他們擦腳屁股的另一件事...... –

+0

客戶端可以在預定義的電子郵件中自動發送一個新的隨機密碼(在第一次使用時更改)根據要求。這樣客戶就可以單獨處理這個問題,並且可能很快就會投入後續存儲擴展! – laurent

2

不在數據庫中存儲散列密碼不是一個選項。試着向你的客戶解釋,如果他們忘記了密碼,那麼改變它會比如果有人侵入你的服務器並獲得它的問題少得多。

+0

準確!總是發送新的密碼。 – laurent

0

如果在將密碼發送到客戶端之前更改密碼不是一個選項,我會將其存儲在數據庫中的主密碼加密。

您可以使用PHP mcrypt來加密/解密密碼。只要不要將主密碼保存在任何地方,它就足夠安全。

它應該不難實現一個系統,它將使用主密碼解密密碼,並通過mail()函數自動發送給客戶端。

+0

爲什麼要加密密碼以將其存儲在「安全」服務器上並以「不安全」電子郵件中的純文本格式發送?您只能通過電子郵件發送臨時密碼,並且客戶必須在第一次使用時更改它,因此記住/解密以前的密碼沒有意義。 – laurent

2

從技術上講,使用mcrypt爲web應用程序進行SSL加密是顯而易見的解決方案,但我不會放棄這個根目錄,並且會讓我自己100%合法排序。

首先,我不會允許一個web腳本訪問這些信息,我會嚴格控制mySQL,以至於它不好笑(例如,服務器上有1個單一數據庫,1個單一用戶,儘可能限制權限,切勿用root訪問它,只有在服務器上運行的服務,如果可能的話關閉服務器,當你不需要它時等等),我只會通過SSH接觸數據。永遠不要永遠不要使用服務器根訪問信息。儘量設置密碼儘可能嚴格,儘可能嚴格root權限並忘記它完全存在。

接下來,我會讓我的客戶簽署一份法律文件,充分賠償由於數據進入錯誤的手而導致的任何損失或損害。我會讓他們簽署一份文件,表明完全理解風險,並且列出的清單不完整。如果可能的話,我也會選擇加入,而不是強制性的。

這是一個可怕的領域,我絕不會做任何像這樣親自如此好運的事情,並確保您的專業賠償保險是最新的。