将它们上传到服务器时的安全文件扩展名

时间:2016-11-13 21:34:51

标签: php

我在面板项目中为用户创建了一个简单的PHP云功能 - 用户可以通过www将文件上传到他的帐户。我知道一些文件扩展名,如.php和其他文件。

我可以添加哪些安全文件扩展名?像png,jpg,jpeg,txt,docx等。

是否值得将此功能添加到我的项目中,还是应该离开它,因为处理安全性并不容易?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

没有安全的文件扩展名。文件扩展名主要作为最终用户的 type-hint ,对大多数软件程序没有实际应用。任何与文件扩展直接相关的可利用安全向量都源于一个更大的问题,例如配置不当的文件系统权限,Web服务器或编写错误的代码,因此无法通过特定文件扩展名的黑名单来缓解(至关注远程文件上传)。

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

然而,这本身并不是衡量实际安全性的标准。当我们讨论如何使远程文件上传安全时,我们正在讨论各种各样的安全向量,这些向量并非都围绕着正在上传的文件。由于文件扩展名完全是用户提供的数据,因此无论如何都无法信任它们,因此无法作为保护任何内容的手段。