将机密信息存储在Web可访问目录中?

时间:2016-10-03 03:39:39

标签: php file security curl

这个问题的答案可能相当明显,但我想解释为什么一种文件安全方法优先于另一种方法。

考虑以下环境:

用户上传文件。该文件被重命名为:newfile_randomstring.png。然后通过cURL将文件发送到远程服务器。当远程服务器收到文件时,将创建一个新目录,并将文件存储为:

'的public_html /上传/ USER_ID / FILE_ID / newfile_randomstring / newfile_randomstring.png'

让我们说这些是重要的文件,如纳税申报表或法律文件。

我的问题是:将文件上传到非Web可访问目录会提供比建议环境更高的安全性吗?其次,使用PHP的uniqid函数从随机字符串创建目录/文件名的建议方法是否首先提供了足够的保护以防止不必要的访问? (例如,某人计算出远程服务器的IP地址,并开始尝试猜测目录名称和结构)。

如果文件在上传后很快被自动删除怎么办?机器人/网络浏览器是否仍然可以访问这些文件?

2 个答案:

答案 0 :(得分:-1)

是的,立即将它们存储在非Web可访问的目录中。如果在网络上发布合理的文档,很容易获取并使用它来进行扭曲和欺诈。从公共文件夹中取出它,然后任何黑客都必须先进入你的系统才能获得信息。

不,随机字符串根本就没有保护,这就是存在权限的原因。

是的,它们仍然可用,但时间较短但仍可用。

如果你只是想到网页抓取器试图进入网站,那么机会就没有任何意义了,但大多数黑客都是通过社交工程进行的,而你所描述的系统就是一切安全的东西,还有很多后门打开。

答案 1 :(得分:-1)

  

将文件上传到非Web可访问目录会提供比当前环境更高的安全性吗?

简短回答:是的,给予越少越好。但是,我不会说您的系统是安全的,因为这些文件位于非Web可访问的目录中。我对你目前正在做的事情有疑问,但我会接触到以下人士。

  

其次,我当前使用PHP的uniqid函数从随机字符串创建目录/文件名的方法是否首先提供了足够的保护以防止不必要的访问? (例如,有人计算出我的远程服务器的IP地址,并开始尝试猜测目录名称和结构)

不,模糊文件名本身并不足以阻止攻击者访问文件。您至少应该将这些文件保存在没有直接公共访问权限的专用网络上,需要(强)身份验证才能访问文件,拥有授权策略,用户可以访问哪些文件,只能连接通过安全通道(例如,TL​​S),加密文件(最好要求客户端使用他们在创建帐户期间收到的密钥来解密文件,但根据您的使用情况可能会或可能不会),并记录/监控所有事件(例如,身份验证,文件下载,身份验证失败等)。

  

如果文件在上传后很快被自动删除怎么办?机器人/网络浏览器是否仍然可以访问这些文件?

在您不需要之后删除这是一个好主意,但不会为您提供足够的安全性。机器人/刮刀必须访问文件的时间当然最小化,但仍然可以访问文件。您肯定希望将这些敏感文件从公共目录中删除。

我的问题:

  1. 这些文件的最终安置位置(即您通过cURL上传到的目录)是否可公开访问?如果我知道URL和端口,是否可以访问该服务器?

  2. 您是通过安全通道(例如TLS)发送所有内容吗?

  3. 您的服务器是否需要身份验证?如果是这样,您如何进行身份验证?

  4. 是否为不同的文件设置了不同的访问策略?

  5. 如何处理冲突(即,要上传的文件与磁盘上的另一个文件同名)?您是否只是假设因为您使用的是随机字符串而无法成为任何人?

  6. 为什么发送文件的服务器命名文件?这可能导致您不想处理的各种攻击。

  7. 您是否对要上传的文件(及其元数据)进行了任何输入卫生设施?至少,你确定它不超过一定的尺寸限制吗?

  8. 上传后如何使用这些文件以及如何访问这些文件?

  9. 您在哪里跟踪随机生成的名称及其映射到的内容?

  10. 文件内容上传到的所有目录的权限设置是什么?

  11. 我确信一旦得到回答,我会有更多问题。

    编辑:添加了另一个问题