php - 允许在 PHP 中上传大文件(安全)

标签 php ini

允许在 PHP 中上传大文件时,是否需要考虑任何安全和/或性能影响?例如,这些是我当前设置的 PHP ini 设置。

memory_limit = 950M
upload_max_filesize = 950M
post_max_size = 950M
max_execution_time = 0

这些设置有什么问题(如果有的话)?

最佳答案

更改这些设置不会改变安全注意事项。但是对于性能,以下内容是有效的:

以执行方式为用户提供服务的艺术是提供足够的资源来满足所有用户的请求。根据您的设置将其转化为示例如下:

10 个用户上传 950 MB 需要您提供 9.5 GB 的带宽和 I/O 吞吐量(例如,受磁盘速度影响)。作为用户,我可能可以忍受在 1 分钟内上传 950 MB,但我会不满意这花了我一个小时。

100 个用户上传 950 MB 需要您提供 95 GB...

1000 位用户上传 950 MB 将需要您提供 950 GB 的服务... ...

当然,并非所有用户都始终追求最大,甚至并发上传也可能受到限制。但是,这些最大设置会增加您的风险堆栈。因此,根据您的使用特征和您填充的资源,这些设置可能是有效的。

但是我假设您给出了极端的例子并且想了解其中的含义。

当我用谷歌搜索“optimize php memory_limit”时,我得到了这个: https://softwareengineering.stackexchange.com/questions/207935/benefits-of-setting-php-memory-limit-to-lower-value-for-specific-php-script

显然,您可以对其他设置执行相同的操作。

在论坛中,您会发现很多发誓反对将这些配置值设置得如此之高的人。然而,在过去的环境中,在其他访问层上仔细管理资源利用率(例如,通过应用程序内权限限制上传用户的数量)对我来说确实很有效。

关于php - 允许在 PHP 中上传大文件(安全),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377662/

相关文章:

javascript - 我如何将 javascript 变量传递给 codeigniter Controller 函数

java - Eclipse Mars 退出代码 = 13 错误

powershell - 在Powershell中需要有关INI文件的帮助

c++ - 使用 Boost.Program_options 处理 INI 文件的部分

PHP Parse INI 文件给我关于等号的错误

javascript - 可选择的表行无法通过 jQuery AJAX 将 id 值发送到 PHP

php - 从 Laravel 存储中检索视频

php - 使用面向对象的 PHP 从 MySQL 中提取设置

php - ZendX_JQuery 还是 Zend_Dojo?

asp.net - ASP.NET Web 服务应用程序中 INI 文件的保存位置