【问题标题】:PHP Encrypting Files During Downloads and UploadsPHP 在下载和上传期间加密文件
【发布时间】:2013-10-19 01:17:30
【问题描述】:

这似乎应该很容易找到,但我已经尝试了我能想到的所有搜索词组合,我所能找到的只是“接近但没有雪茄”的答案。看了半个多小时,终于决定去问问。

我试图做的,明确措辞,是确保我的用户上传到我的网页或从我的网页下载的文件在传输过程中是加密的。我不满意只是将 https:// 放在文件链接的开头,因为这些文件需要密码保护。当然,为了对它们进行密码保护,我已经设置了目录权限,使得里面的文件根本无法通过 URL 访问。我正在使用 PHP 脚本来管理上传和下载。

我曾尝试检查 php.net 页面上有关 headers() 和 mcrypt_encrypt() 等主题的内容,但结果却是空手而归。 headers() 上的页面似乎仅适用于 HTTP,并没有告诉我如何使用加密协议进行文件下载(如果是这样的话),我不能使用 mcrypt_encrypt() 依赖于假设mcrypt_decrypt() 可以稍后运行以使文件可用,因为显然 mcrypt_decrypt() 不能在下载后在客户端运行(也不能 mcrypt_encrypt() 在上传之前在客户端运行),所以我想知道我将使用什么方法来确保用户的浏览器能够以不需要用户采取任何操作的方式加密和解密这些文件 - 与其他所有内容的加密和解密方式相同。

我想假设我在这些网页 URL 上强制执行 https 的事实会像处理网页输出一样自动处理它。但是,我确实观察到具有单独文件路径(如图像和 CSS)的文件不会自动加密,并且我用来触发这些文件下载框的代码包含标题信息,这意味着它是一个单独的事务,并且可能未加密。

我真的,真的从很多角度考虑过这个问题,但我只是没有看到解决方案。有人想帮我吗?

【问题讨论】:

    标签: file security encryption upload download


    【解决方案1】:

    使用 HTTPS 安全(加密)传输数据。将文件存储在每个用户的文件夹中,并且仅在身份验证后允许访问(通过 HTTPS)。

    您很难找到另一个解决方案的原因是 HTTPS 是解决方案。

    如果您想将加密的文件存储在磁盘上,您可以在上传文件时使用对称块(流)密码对其进行加密,并在下载文件时执行相反的操作。您可以使用每个用户唯一的密钥作为对称密钥。

    【讨论】:

    • 如何确保文件下载/上传使用的是 HTTPS 而不是 HTTP?我刚刚搜索了这些术语:php“文件传输”HTTPS php“文件传输”“HTTPS 协议”......并且有人谈论使用 wget 下载备份和有人谈论使用 CURL 下载安全文件,但是在五页结果之后,我仍然没有看到有关如何指定 HTTPS 协议用于从网页上传/下载文件的说明。
    猜你喜欢
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多