Nginx配置安全策略总结
以下均在
nginx.配置
即可
“Content-Security-Policy”头缺失或不安全
这里 script-src 放开了允许内联js
'unsafe-inline'
,其实这里并不是很安全,但公司项目的前端架构已经成型改动代码工作量太大,先跟着指定的ip或域名访问这样配置着。后面有时间在出动态生成 nonce属性值的文档。
add_header Content-Security-Policy "default-src 'self' *.baidu.com *.myqcloud.com ; script-src 'self' 'unsafe-inline' *.baidu.com ; connect-src 'self';img-src * data: blob: ; style-src 'self' 'unsafe-inline' 'unsafe-eval' *.baidu.com *.myqcloud.com https: ; frame-ancestors 'self'; font-src * https: data: ";
“X-Content-Type-Options”头缺失或不安全
add_header X-Content-Type-Options nosniff;
“X-XSS-Protection”头缺失或不安全
add_header X-XSS-Protection "1; mode=block";
HTTP Strict-Transport-Security头缺失或不安全
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
发现可高速缓存的SSL页面
# “Cache-Control: no-store”和“Pragma: no-cache”或“Cache-Control: no-cache”
add_header Cache-Control max-age=3600;
检测到SHA-1密码套件
ssl_ciphers ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE:!SHA-1;
ssl_prefer_server_ciphers on;
检测到隐藏目录
location ^~ /(html|static|img) {
deny all;
}
location ^~ /地址名称/对应的目录/ {
deny all;
}
error_page 403 =404 /404.html;
检测到支持较老的TLS版本
# TLSv1.2 以上版本即可
ssl_protocols TLSv1.2 TLSv1.3;
未实施加密
set $open_http 0;
if ($scheme = http) {
set $open_http "${open_http}1";
}
if ($scheme = https) {
set $open_http "${open_http}0";
}
if ($request_uri ~* "/地址名称/ajax/libs/") {
set $open_http "${open_http}0";
}
if ($request_uri ~* "/地址名称/js/") {
set $open_http "${open_http}0";
}
if ($open_http = "010") {
return 403;
}
启用了不安全的“OPTIONS”HTTP 方法
server {
...
# 如果我们在服务器环境中,最好使用这样的结构:
add_header Allow "GET, HEAD, POST" always;
if ($request_method !~ ^(GET|HEAD|POST)$) {
# 您还可以在“if”上下文中使用“add_header”:
# add_header Allow "GET, HEAD, POST" always;
return 405;
}
...
}
版权声明:本文为xisgod原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。