2010-07-06 59 views
0

我寫了一個PHP腳本,它將在每個星期一使用cron運行。在這封電子郵件中,我附上了包含敏感信息的XLS文檔。保護這封電子郵件的最佳方式是什麼?我可以在XLS文檔上設置密碼嗎?我可以加密電子郵件,只允許正確的接收者有權打開它嗎?在PHP中發送安全電子郵件的最佳方式是什麼

我使用PHPExcel創建XLS文檔,以防萬一。

感謝您的幫助!
Metropolis

+0

一種選擇是使用安全加密算法對xls文件進行簡單加密,然後讓接收方對其進行解密。 – Cam 2010-07-06 15:35:06

+1

使用PHPExcel並沒有太大的區別恐怕我們不支持設置Excel密碼 – 2010-07-06 15:37:08

回答

5

加密的電子郵件是做恕我直言,最安全的方式。如果您擁有服務器的控制權,您可以安裝GPG並從命令行調用它以使用密鑰加密電子郵件。缺點是收件人需要一個插件到他們的電子郵件客戶端並使用公鑰解密郵件。

一個稍微不安全的方式,但最終用戶更容易發送一封普通電子郵件,其中包含用於下載XLS文件的人員的鏈接。然後將XLS文件存儲在密碼保護區域後面。使用HTTPS加密頁面和下載。另外,您可以使用MD5創建一次性HASH,或者更好的是由PHP腳本生成的SHA256,並將其存儲在與該文件相關的數據庫中。將其作爲鏈接參數發送並使其到期。這使得非預期的人更難以訪問該鏈接。

第二種方法還具有可在任何主機上使用的好處,可讓您執行SSL。不需要特別訪問服務器。

+0

+1提供電子郵件鏈接 – 2010-07-06 16:07:27

+0

如果我使用GPG加密郵件,所有電子郵件客戶端都需要一個插件爲客戶提供簡單的流程?最好的解決方案很可能是你建議將文件保存在密碼保護區域後面的建議。 – Metropolis 2010-07-06 18:01:36

+0

@Metropolis:是的,所有的客戶都需要一個插件。 – Cfreak 2010-07-06 22:25:07

1

PHPExcel不支持密碼(尚未)和AFAIK passwords on Excel files are not 100% secure(只有Office 2007+擅長保護文件)。最好的方法是在將文件附加到電子郵件之前加密文件,然後在收到文件後對其進行解密。如果您可以在您的PHP安裝(see this)下使用GnuPG加密,則會有一個ThunderbirdSeamonkey郵件客戶端調用Enigmail的插件,它將自動執行解密過程。

+0

我將無法在我們使用alex的主機上安裝GnuPG。如果我使用openssl_public_encrypt,那裏有加密類型的插件嗎?另外,我如何加密正在發送的文件?看起來這些東西只能加密數據。 – Metropolis 2010-07-06 21:16:02

+0

不,我不知道其他類型的加密其他插件。您可以使用openssl_public_encrypt加密文件。只需用file_get_contents加載文件的內容,使用openssl_public_encrypt對其進行加密,然後使用類似fwrite的方式編寫加密結果,最後將此文件附加到您的電子郵件中。 – AlexV 2010-07-07 12:38:01

+0

雖然我需要該文件爲xls格式。如果我以這種方式加密數據,而不使用PHPExcel,那麼它仍然可以工作嗎?或者有沒有辦法使用PHPExcel輸出加密數據? – Metropolis 2010-07-07 12:50:37

相關問題