【问题标题】:Securely save email attachments on web server将电子邮件附件安全地保存在 Web 服务器上
【发布时间】:2012-10-19 06:53:41
【问题描述】:

我正在构建一个使用 PHPMailer 发送电子邮件的 Web 应用程序,并且我已经围绕 PHPMailer 构建了一个包装类来记录正在发送的电子邮件。我还没有弄清楚的一部分是如何安全地保存附件。我不想将文件内容读入 MySQL 数据库中的字段,因为这样做效率不高。我不想将它们存储在 Web 服务器上的文件夹中,因为可以从 Web 浏览器访问(服务器没有 public_html 文件夹,所以我不能将它们粘贴在无法访问的文件夹中) .

除了通过我的应用程序之外,存储电子邮件附件以使其无法阅读的最佳/正确方法是什么?

【问题讨论】:

    标签: php mysql email phpmailer attachment


    【解决方案1】:

    您可以将这些附件保存为加密文件,但我不明白为什么 mysql 解决方案会有缺陷。除此之外,获得一个合适的服务器,您确实有私人目录等。

    【讨论】:

    • 尽管我很想得到一个合适的服务器,但这个电话在我之上。我坚持我所拥有的。您将如何加密文件?
    • 是时候给你一个迟到 2 年的答案了,但万一其他人看到这个问题,你可能想使用 AES 来加密那个文件。 AES 会打乱文件中的所有数据并使其几乎不可能逆转。 AES 是一种分组密码,这意味着您可以指定一个密钥,然后在需要时使用该密钥对文件进行加密和解密。我确实喜欢另一个答案,它可能会更好,但我也是那些总是喜欢密码学答案的密码学极客之一。
    【解决方案2】:

    这真的取决于你想对这些文件做什么。

    如果您将 then 存储在公共网络目录中,您可以在其中放置一个 .htaccess 文件(假设您使用的是 apache),以阻止对这些文件的网络访问。

    您可以将其存储在公共网络文件夹下方的文件夹中。

    例如,大多数服务器都有这样的东西

    /www/website.com/httpdocs
    

    其中 httpdocs 是公用文件夹。

    您需要做的就是将它们存储在

    /www/website.com/privatedocs
    

    因此它们无法通过网络访问

    如果您只是想审核发送的电子邮件,另一种选择是将其密送至另一个电子邮件帐户,例如 audit@website.com

    然后,如果您需要检查任何内容,只需查看该电子邮件帐户即可。然而,与扫描本地服务器上的文件的导向器相比,这将难以以编程方式检查。

    【讨论】:

    • 服务器没有 httpdocs 目录,所有文件都是公开的,所以我不能使用那个选项(它会变得容易得多)。
    猜你喜欢
    • 2010-09-14
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多