使用PHP-FPM(FastCGI Process Manager)可以显著提升网站的安全性。以下是一些关键步骤和最佳实践:
pm.max_children
、pm.start_servers
、pm.min_spare_servers
和pm.max_spare_servers
参数,避免资源耗尽。; php-fpm.conf
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = www-data
listen.group = www-data
# 使用ufw限制端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo apt-get update
sudo apt-get upgrade php-fpm
php.ini
中禁用危险的内存函数,如eval()
、exec()
等。disable_functions = eval, exec, system, passthru, shell_exec, popen
E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_USER_NOTICE & ~E_USER_DEPRECATED
,避免泄露敏感信息。display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_USER_NOTICE & ~E_USER_DEPRECATED
if ($_SERVER['HTTPS'] != "on") {
header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
// 示例:使用htmlspecialchars防止XSS
echo htmlspecialchars($_GET['input'], ENT_QUOTES, 'UTF-8');
HttpOnly
和Secure
标志。session_set_cookie_params([
'lifetime' => 0,
'path' => '/',
'domain' => $_SERVER['HTTP_HOST'],
'secure' => true,
'httponly' => true,
'samesite' => 'Strict'
]);
session_start();
通过以上步骤,可以显著提升使用PHP-FPM的网站的安全性。记住,安全性是一个持续的过程,需要不断地评估和更新。