作为IT工程师,我将为您提供一套完整的Nginx安全架构设计方案,重点防范CSRF、XSS和SQL注入这三大常见Web安全威胁。Nginx作为反向代理和Web服务器,可以通过多种配置手段增强应用安全性。
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
# 确保只接受POST请求处理敏感操作
location /api/ {
if ($request_method !~ ^(POST)$ ) {
return 405;
}
# 代理传递CSRF Token头
proxy_set_header X-CSRF-Token $http_x_csrf_token;
}
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://trusted.cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; frame-src 'none'; object-src 'none'";
add_header X-XSS-Protection "1; mode=block";
# 拦截常见XSS攻击向量
set $xss "";
if ($query_string ~* "javascript:") { set $xss "1"; }
if ($query_string ~* "<script") { set $xss "1"; }
if ($xss = "1") { return 403; }
# 拦截常见SQL注入模式
location ~* \.php$ {
set $sql_inj "";
if ($query_string ~* "union.*select") { set $sql_inj "1"; }
if ($query_string ~* "concat.*\(") { set $sql_inj "1"; }
if ($query_string ~* "information_schema") { set $sql_inj "1"; }
if ($sql_inj = "1") { return 403; }
# PHP处理配置
fastcgi_pass php-fpm;
include fastcgi_params;
}
# 只允许必要的HTTP方法
location / {
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
}
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 防止暴力破解
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
location /login {
limit_req zone=one burst=20;
}
server_tokens off;
more_clear_headers 'Server';
more_clear_headers 'X-Powered-By';
log_format security '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$request_time $upstream_response_time '
'[$http_x_forwarded_for]';
access_log /var/log/nginx/security.log security;
# 拦截非法User-Agent
if ($http_user_agent ~* (nmap|nikto|wikto|sf|sqlmap|bsqlbf|w3af|acunetix|havij|appscan) ) {
return 403;
}
通过以上Nginx安全架构设计,可以显著提高Web应用对CSRF、XSS和SQL注入攻击的防御能力,同时不影响合法用户的正常访问体验。