文件类型验证
// PHP示例
$allowed_types = ['image/jpeg', 'image/png'];
if (!in_array($_FILES['file']['type'], $allowed_types)) {
die("文件类型不被允许");
}
文件内容检查
file
命令或相关库检查实际文件内容文件大小限制
# Nginx配置
client_max_body_size 10M;
上传目录隔离
chmod -R 750 /var/www/uploads
chown -R www-data:www-data /var/www/uploads
文件系统保护
mount -o remount,ro,nosuid,nodev,noexec /var/www/uploads
Web服务器配置
<Directory "/var/www/uploads">
php_admin_flag engine off
</Directory>
病毒扫描
sudo apt install clamav clamav-daemon
freshclam # 更新病毒库
文件重命名
内容消毒
实时监控
inotifywait -m /var/www/uploads -e create -e move -e delete
日志分析
入侵检测
sudo apt install ossec-hids-server
CSRF保护
速率限制
limit_req_zone $binary_remote_addr zone=upload:10m rate=1r/s;
沙盒处理
隔离措施
取证分析
stat
命令检查文件元数据漏洞修复
通过实施以上多层次防御措施,可以显著降低Web接口遭受恶意文件上传攻击的风险。安全是一个持续的过程,需要定期审查和更新防护策略。