【问题标题】:Allowing large file uploads in PHP (security)允许在 PHP 中上传大文件(安全性)
【发布时间】:2014-08-14 04:28:04
【问题描述】:

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

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

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

【问题讨论】:

  • 运营影响,是的; 任何上传文件的安全性应该相同,无论大小。
  • 嗯,很多人可以上传很多 950MB 的文件……这总是一个问题。杰克的评论一针见血。
  • 你忘了max_execution_time默认是30秒。
  • 我认为文件应该位于外部盒子上。与您的 Web 应用程序分开。无法访问应用层/数据库上的资源。

标签: php ini


【解决方案1】:

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

以执行方式为用户提供服务的艺术是为用户总数的请求提供足够的资源。根据您的设置将其转换为示例将类似于:

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

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

1000 个用户上传 950 MB 将要求您提供 950 GB... ...

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

不过,我假设您举了一些极端的例子,并且想了解其中的含义。

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

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

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

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多