为什么将私有文件上传到公共文件夹很危险? -我需要了解风险

问题描述

我目前使用Laravel将仅管理文件上传到私有文件夹。该文件夹位于根目录下,因此无法直接从Web进行访问,只有具有正确角色的登录用户才能访问它们。一切都很好。

我看到很多开发人员在这里创建文件夹: public_html/private_folder/image.jpg

仅将一个空的index.html文件放入public_html/private_folder/

如果图像文件名的编码如下: public_html/private_folder/9879879gfd9gdf987d9fg87.jpg

黑客如何在不将受感染脚本上传到服务器的情况下从Web访问该目录中的所有文件

我尝试从与我合作的开发人员(存在此安全问题)中测试一个文件夹,并且无法设法猜测该目录中的文件名(即使使用许多扫描仪)。我只有事先知道方向和文件名才能公开访问它们。

请问有什么主意吗?我想了解为什么我总是以Laravel的方式学习它(所以我可以向其他开发人员解释它)。因为告诉他们在无法解释原因的情况下更改脚本的内部工作原理并演示他们面前的安全问题,这对我来说有点沮丧。

解决方法

我相信在某些情况下开发人员的操作可能是可以接受的,但是他们需要了解全局。它是这样的:

  • 位于public_html/private_folder/9879879gfd9gdf987d9fg87.jpg下的文件受文件名中密码的保护。保护的强度与文件名的熵(此处大约为60位;由我的keepass计数)一样强,从现代加密技术的角度来看,这是不够的(建议至少128个)。
  • 此解决方案对服务器错误配置高度敏感。由于错误地允许目录列表,公开文件可能很容易。需要与服务器管理员合作。
  • 如果您不是将URL粘贴到浏览器的URL字段中,而是将其粘贴到google中,将会发生什么情况?您实际上将机密发送给了Google。您会旋转文件名吗?您应该将其作为秘密与第三方共享。片刻之内它可能会被爬行者刮擦,并且一开始就不再是秘密。
  • 实际上,由于上​​述原因,人们只能以这种方式共享自己的文件,并对保密承担个人责任。如果用户不承担这种责任,并且可能将链接放入Word文档,excel文件,远程驱动器等中,可能会共享链接,我将不允许这样做。