2011-06-30 68 views
3

我正在爲需要用戶上傳文件的基本加密形式的服務建立文件上傳系統的原型。所有上傳的文件都將上傳到用戶可以自由下載和上傳文件的同一目錄中,但只有授權用戶才能從上傳文件中刪除文件。爲此,我需要知道加密這些文件的最佳方式(通過crypt()或類似的方法),以便存儲在非公開訪問的目錄中以達到此目的。我考慮使用PHP內置的base 64編碼功能來完成這一任務,但似乎有人能夠在另一臺服務器上編寫PHP腳本,以64位解密存儲在我的服務器上的文件,從而使加密保護完全無用。加密/解密通過PHP上傳的文件的最佳方法是什麼?

總之,我需要知道實現的最佳方式本(即,使用函數或類),以便它符合以下標準:

  1. 功能必須是可逆的方式,只有通過PHP的$_SESSION變量登錄的用戶才能解密已加密的文件。
  2. 加密需要影響所有文件類型,不管它是圖像,文本,二進制文件還是文檔,並且解密文件都必須生成與加密文件相同的文件(即頭部完好無損)。

我可能會擔心超過必要的程度,但我想盡可能使用它來提高基本安全性。我沒有保護任何特別重要的信息,例如信用卡信息或商業祕密,但我正在設計的用戶想要知道至少有一些措施可以防止黑客入侵上傳的文件。

+1

bas64對加密很有用,因爲溼廁紙用於針織毛衣 –

回答

13

base64不加密。

如果你想強大的加密,你要考慮使用的GPG extension

然後,你需要仔細考慮您的系統架構。

如果服務器需要加密/解密文件,密鑰將需要在服務器上,並可由Web服務器進程讀取。這意味着如果有人妥協你的服務器,他們可能有權訪問他們需要解密你的文件的一切!

更糟的是,由於您的PHP應用程序驅動加密/解密,所有攻擊者需要做的就是訪問您的用戶帳戶之一。

如果攻擊者以某種方式訪問​​您的文件存儲目錄,但是服務器上沒有任何其他內容,加密只會節省您的時間。這是一個非常不可能的情況。

就你而言,這聽起來像磁盤加密是矯枉過正。如果文件不能直接通過網絡訪問,那可能就足夠了。重點關注確保主機系統安全(更新軟件包,良好的防火牆規則)以及您的應用程序是安全的(僅在https下運行它,使用最佳實踐來擊敗SQL注入和CSRF攻擊,需要強密碼等)。

+1

+1用於GPG加密 –

相關問題