为此目的加密/解密通过PHP上传的文件的最佳方法?

wpr*_*ton 3 php encryption upload file

我正在为一个服务创建文件上传系统的原型,该服务需要对用户上传的文件进行基本加密形式.上传的所有文件将上传到用户可以自由下载和上传文件的同一目录,但只有授权用户才能从上传中删除文件.

考虑到这一点,我需要知道crypt()为此目的加密这些文件(通过或类似)以存储在非公共可访问目录中的最佳方法.我考虑过使用PHP内置的64位基本编码功能来实现这一点,但似乎有人能够在另一台服务器上编写PHP脚本来解密存储在我服务器上的文件,从而使加密保护完全失效.

总之,我需要知道实现它的最佳方法(即使用哪些函数或类),以使其符合以下条件:

  1. 该函数需要是可逆的,只有通过PHP $_SESSION变量登录的用户才能解密加密的文件.
  2. 加密需要影响所有文件类型,无论是图像,文本,二进制文件,文档,还是解密文件都必须生成与加密文件相同的文件(即标题完好无损).

我可能担心的不仅仅是必要的,但我希望尽可能简单地使用基本的安全性.我没有保护任何特别重要的信息,如信用卡信息或商业机密,但我正在设计的用户希望能够安心地知道至少有一些措施可以防止黑客入侵文件已上传.

tim*_*dev 13

base64不加密.

如果您需要强加密,则需要考虑使用GPG扩展

然后,您需要仔细考虑您的系统架构.

如果服务器需要加密/解密文件,则密钥需要位于服务器上,并且可由Web服务器进程读取.这意味着如果有人破坏了您的服务器,他们可能会访问解密文件所需的一切!

更糟糕的是,由于您的PHP应用程序驱动加密/解密,攻击者需要做的就是访问您的一个用户帐户.

如果攻击者以某种方式访问​​您的文件存储目录,加密只会保存您,但服务器上没有任何其他内容.这是一个非常不可能的情况.

在您的情况下,听起来像磁盘加密是过度的.如果文件不能直接通过网络访问,那就足够了.重点关注确保主机系统是安全的(更新的软件包,良好的防火墙规则),以及您的应用程序是安全的(仅在https下运行,使用最佳实践来抵御SQL注入和CSRF攻击,需要强密码等).