温馨提示×

ubuntu php怎样防黑客攻击

小樊
61
2026-09-10 08:57:18
栏目: 编程语言

在 Ubuntu 上运行 PHP 应用时,防止黑客攻击需要从系统、Web 服务、PHP 配置、代码、运维多个层面来做。下面给你一套实用、可落地的防护清单。


一、系统层面

1. 及时更新系统

sudo apt update
sudo apt upgrade -y

定期更新 Ubuntu 和 PHP,修复安全漏洞。

2. 使用普通用户 + sudo

  • 不要直接用 root 跑服务
  • 禁用 root 远程登录(SSH)
sudo nano /etc/ssh/sshd_config
# PermitRootLogin no
sudo systemctl restart ssh

3. 配置防火墙

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

二、Web 服务(Nginx / Apache)

1. 关闭目录浏览

Nginx

autoindex off;

Apache

Options -Indexes

2. 禁止访问敏感文件

Nginx 示例

location ~ /\.(git|env|htaccess) {
    deny all;
}

3. 限制上传目录执行 PHP

location /uploads/ {
    location ~ \.php$ {
        deny all;
    }
}

三、PHP 安全配置

编辑:

sudo nano /etc/php/8.x/fpm/php.ini

关键安全参数

expose_php = Off
display_errors = Off
log_errors = On
allow_url_include = Off
allow_url_fopen = On  # 如不需要可 Off
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
open_basedir = /var/www/html:/tmp

然后重启 PHP:

sudo systemctl restart php8.x-fpm

四、代码层面(最重要)

1. 防 SQL 注入

✅ 使用 PDO / 预处理

$stmt = $pdo->prepare("SELECT * FROM user WHERE id = ?");
$stmt->execute([$id]);

❌ 禁止字符串拼接 SQL


2. 防 XSS

echo htmlspecialchars($value, ENT_QUOTES, 'UTF-8');

3. 防 CSRF

  • 使用 token
  • 表单中加:
<input type="hidden" name="csrf" value="<?= $_SESSION['csrf'] ?>">

4. 文件上传安全

  • 限制类型、大小
  • 重命名文件
  • 存到非 Web 可执行目录

五、权限控制

正确的目录权限

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

⚠ 配置文件不要 777


六、HTTPS & 安全头

1. 使用 HTTPS(Let’s Encrypt)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

2. 安全响应头

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy "default-src 'self'";

七、日志与监控

1. 查看异常

sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/php8.x-fpm.log

2. 使用安全工具

  • fail2ban(防暴力破解)
sudo apt install fail2ban

八、常见攻击防护总结

攻击类型 防护方式
SQL 注入 预处理
XSS htmlspecialchars
文件上传 限制+重命名
目录遍历 open_basedir
暴力破解 fail2ban
0day 及时更新

如果你愿意,我可以:

  • ✅ 针对 Laravel / ThinkPHP / 原生 PHP 给具体方案
  • ✅ 帮你 检查现有服务器安全配置
  • ✅ 给你一份 PHP 安全 Checklist(可直接用)

你现在是用的 Nginx 还是 Apache?PHP 版本是多少?

0 踩