PHP 安全:限制脚本使用的资源
如何控制和限制 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,您还需要设置以下内容:
现在您的 Perl/Php/Python 脚本可以直接连接到数据库,而无需传递主机、用户和密码信息。接下来,重新加载 Apache Web 服务器:
或重新加载 lighttpd Web 服务器:
或重新加载 php7.0-fpm:
或使用 systemctl 命令:
请注意,任何超出这些限制的尝试都将导致“500 服务器错误”。有关更多信息,请参阅Linux:系统管理员的 25 个 PHP 安全最佳实践
mysqli.default_host = "192.168.1.252"
mysqli.default_port = "3306"
mysqli.default_user = "userNameHere"
mysqli.default_pw = "PasswordHere"
# service httpd reload
# /etc/init.d/lighttpd reload
# /etc/init.d/php7.0-fpm reload
# systemctl reload php7.0-fpm