2010-10-08 65 views
0

對於其中一個角色,我一直通過電子郵件收到一些人的文檔。這是非敏感的數據,所以電子郵件是好的,但我想建立一個小型門戶,人們可以上傳文件,只有當他們提交所有需要的文件時,我纔會收到通知,說明請求已完成。使用OpenSSL和PHP來存儲數據?

無論內容如何,​​我都想安全地存儲文檔。這也讓我在考慮其他需求時總體考慮加密。最初我在MySQL中查看了AES加密,但普遍的共識是這樣做不好,因爲密鑰在服務器中很容易獲得。所以這讓我想到了公鑰/私鑰加密。

以下是我正在研究,看它是否會工作,或者如果它已經完成,我只是找不到標準的執行計劃:

  1. 我生成公鑰/私鑰對。公鑰發送到Web服務器,私鑰與我保持在我的電腦上。
  2. 用戶通過網站將文件通過https網站上傳到我的網站服務器。
  3. 上傳腳本獲取文件,使用公鑰對其進行加密,並將其存儲在文件系統或數據庫中。
  4. 完成後,我會收到通知,我會連接到服務器並通過SSH或其他加密連接下載文件。
  5. 最後,我使用私鑰對文件進行本地解密,並根據需要處理它們。

我在這種情況下缺少的任何缺陷?或者如果有更好的方法來實現這一點,任何人都可以指出我的方向是正確的嗎?謝謝。

回答

0

你的計劃基本上說你信任服務器,而不是文件系統。這用於您使用共享服務或第三方備份的情況,或者希望通過定期銷燬加密密鑰來強制實施數據銷燬策略。

如果您不希望在上傳之前加載用戶的加密文件,它確實是最好的選擇。

唯一的竅門是設置Web服務器,以便它將上傳的文件嚴格保存在內存中,直到您對它們進行加密。例如,PHP甚至在調用腳本之前,會默認將上傳的文件寫入/ tmp。