【问题标题】:Safe file extensions while uploading them to server将文件上传到服务器时的安全文件扩展名
【发布时间】:2016-11-13 21:34:50
【问题描述】:

我正在为我的面板项目中的用户创建一个简单的 PHP 云函数 - 用户将能够通过 www 将文件上传到他的帐户。我知道一些文件扩展名,如 .php 等。

我可以根据需要添加哪些安全文件扩展名?比如 png、jpg、jpeg、txt、docx 等。

是否值得将此功能添加到我的项目中,或者我应该放弃它,因为在那里处理安全性并不那么容易?

【问题讨论】:

    标签: php


    【解决方案1】:

    首先,始终将文件存储在受htaccess 文件保护的非公共目录中。为了更好地衡量,只需在存储之前将“安全”文件扩展名(如“.dat”)附加到每个文件。此外,请确保您正在检查用户不能构造一个请求,该请求会以某种方式允许他们欺骗您的网站向他们发送他们不应该访问的数据(例如其他用户的文件、开发和网站-控制文件等)。验证一切——不要相信表单输入、cookie 或其他任何来自另一个系统的东西。

    【讨论】:

      【解决方案2】:

      根本就没有安全文件扩展名之类的东西。文件扩展名主要用作对最终用户的类型提示,并且对于大多数软件程序没有真正的实际应用。任何与文件扩展名直接相关的可利用安全向量都源于一个更大的问题,例如配置不当的文件系统权限、Web 服务器或编写错误的代码,因此无法通过特定文件扩展名的黑名单来缓解(涉及远程文件上传)。

      在基于 NIX* 的操作系统上,大多数软件程序通常依靠 magic MIME bytes 来识别文件类型。您可以使用mime_content_type()finfo::file() 之类的方式在 PHP 中检查文件的 MIME 类型。

      但是,这本身并不是任何实际安全措施。当我们讨论如何使远程文件上传安全时,我们谈论的是非常广泛的安全向量,这些安全向量并不都围绕正在上传的文件。由于文件扩展名完全是用户提供的数据,因此无论如何都不能信任它们,因此不可能作为保护任何东西的手段。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-17
        • 2010-11-25
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-14
        相关资源
        最近更新 更多