2010-07-06 64 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

相关问题