在Ubuntu系统中配置PHP安全选项,可以通过修改PHP的配置文件php.ini
来实现。以下是一些常见的安全选项及其配置方法:
在生产环境中,通常不希望显示详细的错误信息给用户,以防止泄露敏感信息。
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
某些PHP函数可能会被滥用,因此在生产环境中应该禁用它们。
disable_functions = eval,assert,popen,curl_exec,system,pcntl_exec,escapeshellcmd,escapeshellarg,base64_decode,exec,shell_exec,proc_open,proc_get_status
为了防止恶意文件上传,可以设置文件上传的大小和类型限制。
upload_max_filesize = 2M
post_max_size = 8M
file_uploads = On
确保会话ID不易被猜测,并且会话数据存储在安全的位置。
session.cookie_httponly = On
session.cookie_secure = On
session.gc_maxlifetime = 1440
OPcache可以提高PHP的执行效率,并且可以减少一些安全风险。
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
如果使用数据库,确保连接是安全的,并且使用预处理语句来防止SQL注入。
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
确保所有与服务器的通信都是通过HTTPS进行的,以防止中间人攻击。
session.cookie_secure = On
保持PHP及其相关库的最新版本,以修复已知的安全漏洞。
sudo apt update
sudo apt upgrade php*
编辑php.ini
文件:
sudo nano /etc/php/7.4/cli/php.ini # 对于CLI模式
sudo nano /etc/php/7.4/apache2/php.ini # 对于Apache模式
sudo nano /etc/php/7.4/fpm/php.ini # 对于PHP-FPM模式
修改完成后,重启相应的服务:
sudo systemctl restart apache2 # 对于Apache
sudo systemctl restart php7.4-fpm # 对于PHP-FPM
通过以上步骤,可以显著提高Ubuntu系统中PHP的安全性。