PHP安全性:限制脚本使用的资源

时间:2020-01-09 10:43:00  来源:igfitidea点击:

如何控制和限制php脚本,例如每个脚本的最大执行时间和上传文件的大小?

PHP在php.ini文件中支持以下资源限制指令:

  • max_execution_time:每个脚本的最大执行时间,以秒为单位。
  • max_input_time:每个脚本可用于分析请求数据的最长时间。
  • memory_limit:脚本可能消耗的最大内存量。

编辑/etc/php.ini或者/etc/php/7.0/fpm/php.ini(fpm-php 7配置),执行:

# vi /etc/php.ini

或者

# vi /etc/php/7.0/fpm/php.ini

设置值如下:

max_execution_time =  30
max_input_time = 30
memory_limit = 40M

设置PHP将接受的POST数据的最大大小:

post_max_size = 8M

设置上传文件的最大允许大小:

upload_max_filesize = 2M

打开或者关闭HTTP文件上传(除非必要,否则禁止上传):

file_uploads = Off

确保使用以下命令正确重定向PHP:

cgi.force_redirect = 0

使用以下命令将文件请求禁用为fopen调用

allow_url_fopen = Off

开启SQL安全模式:

sql.safe_mode = On

如果设置sql.safe_mode,则还需要设置以下内容:

mysqli.default_host = "192.168.1.252"
mysqli.default_port = "3306"
mysqli.default_user = "userNameHere"
mysqli.default_pw = "PasswordHere"

现在,您的Perl/Php/Python脚本可以直接连接到数据库,而无需传递主机,用户和密码信息。
接下来,重新加载Apache Web服务器:

# service httpd reload

或者重新加载lighttpd Web服务器:

# /etc/init.d/lighttpd reload

或者重新加载php7.0-fpm:

# /etc/init.d/php7.0-fpm reload

或者使用systemctl命令:

# systemctl reload php7.0-fpm

请注意,任何超过这些限制的尝试都会导致500服务器错误。