alirdn / secureupload
PHP安全文件上传包
dev-master
2016-02-15 22:47 UTC
Requires
- php: >=5.3.0
- ext-fileinfo: *
Requires (Dev)
- mikey179/vfsstream: 1.6.*
- phpunit/phpunit: ~4.8
This package is not auto-updated.
Last update: 2020-01-10 15:43:29 UTC
README
SecureUPload 是一个用于安全上传文件的 PHP composer 包。SecureUPload 遵循 PHP 文件上传的最佳实践,因此您可以在没有任何文件上传安全烦恼的情况下使用它。此外,它足够灵活,可以适应大多数不同项目结构。
为什么选择 SecureUPload?
文件上传是所有 Web 应用程序中的风险部分。攻击者可以通过文件上传功能以多种方式攻击 Web 应用程序。因此,每当 Web 应用程序想要添加此功能时,开发人员都需要编写大量代码来确保其无风险。但如果我们不信任用户提供的数据(包括 HTTP 头和文件),并仔细检查一切,则文件上传可以安全。有关文件上传风险更多信息,请参阅: OWASP 无限制文件上传
SecureUPload 使用最佳实践步骤来确保文件上传安全。通过使用 SecureUpload 包,开发人员可以专注于项目的其他方面,并确保文件上传安全。
功能
- 支持单个和多个输入文件/文件上传
- 支持将上传的文件存储在不同的位置。更多信息请参阅 SecureUPloadConfig 的 storage_type 部分
- 支持不同的上传文件组织方式
- 全局或特定上传配置接受的文件类型和最小/最大文件大小
- 生产环境零依赖
- 对无效上传文件使用不同的错误代码,以便更好地处理错误
安装
由于 SecureUPload 没有依赖项,它可以作为 composer 包安装,或者不使用 composer,作为 PHP 库安装。
作为 composer 包安装
$ composer install alirdn/secureupload
作为 PHP 库安装
您必须从项目的 GitHub 页面下载它。然后解压它,并将 src/autoloader.php 文件包含在您的 PHP 项目中。完成!
基本用法
<?php use Alirdn\SecureUPload\Config\SecureUPloadConfig; use Alirdn\SecureUPload\SecureUPload; // Create SecureUPloadConfig and set Uploaded files folder $SecureUPloadConfig = new SecureUPloadConfig; $SecureUPloadConfig->set( 'upload_folder', 'uploads' . DIRECTORY_SEPARATOR ); // Create SecureUPload and give previously created config to it $SecureUPload = new SecureUPload( $SecureUPloadConfig ); // Upload a file $Upload = $SecureUPload->uploadFile( 'file' ); // Check uploaded file if ( $Upload->status ) { // File has been set in <input type="file" name="file"/> if ( $Upload->status == 1 ) { echo 'File uploaded successfully. Id: ' . $Upload->id; // Save $Upload->id for future uses. } else { echo 'File didn\'t uploaded. Error code: ' . $Upload->error; // Show error } } else { // No file is selected in input field }
文档
- 请参阅 文档
需求
SecureUPload 与 PHP 5.3.0 及以上版本兼容。HHVM 也已测试并正常工作。
错误 & 功能请求
提交错误或功能请求,请使用 GitHub 存储库问题。
待办事项
- 添加病毒扫描服务API
- 添加保存到数据库功能
许可证
SecureUPload遵循MIT许可证。有关详细信息,请参阅LICENSE文件。
作者
- Alireza Dabiri Nejad – Me@allii.ir