针对像德勤这样的专业渗透测试(Pentest)的场景中,为了确保网站的安全性并通过严格的安全审查,需要为这些安全头配置更细致、专业的参数。

以下是对每个选项的建议以及设置值的详细说明:

1. Strict-Transport-Security (HSTS)

确保所有通信强制通过 HTTPS 并防止降级攻击。

推荐值:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

参数解释:

  • max-age=31536000:HSTS 缓存有效期设为 1 年(以秒为单位),确保长期有效。
  • includeSubDomains:将 HSTS 策略扩展到所有子域名,避免主域和子域之间的攻击风险。
  • preload:将域名提交到 HSTS 预加载列表以防止首次访问时的降级攻击。需要在 HSTS Preload List 提交域名。

2. Content-Security-Policy (CSP)

定义允许加载的内容来源,防止跨站脚本(XSS)和数据注入攻击。

推荐值(需根据业务需求定制):

add_header Content-Security-Policy "default-src 'none'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self';" always;

参数解释:

  • default-src 'none':默认禁止加载任何外部资源。
  • script-src 'self':仅允许加载本域的脚本。
  • style-src 'self':仅允许加载本域的样式。
  • img-src 'self' data::仅允许加载本域的图片和 Base64 内嵌的图片。
  • font-src 'self':仅允许加载本域的字体。
  • object-src 'none':禁止加载插件内容(如 Flash)。
  • frame-ancestors 'none':防止网站被嵌入到 iframe 中,防止点击劫持攻击。
  • base-uri 'self':限制 <base> 标签的 URL。
  • form-action 'self':只允许表单提交到本站,防止 CSRF 攻击。

注意:

  • CSP 策略需与网站的实际需求相匹配,以避免破坏正常功能。
  • 如果网站需要使用第三方资源(如 Google Fonts 或 CDN),需明确指定来源,例如:
    script-src 'self' https://example.com; style-src 'self' https://fonts.googleapis.com;.

3. X-Content-Type-Options

防止 MIME 类型混淆攻击,强制浏览器遵循 Content-Type 响应头。

推荐值:

add_header X-Content-Type-Options "nosniff" always;

参数解释:

  • nosniff:禁止浏览器进行内容类型嗅探,防止将非预期内容(如脚本文件)执行。

4. X-XSS-Protection

启用浏览器的内置 XSS 保护机制(某些现代浏览器已默认禁用该功能)。

推荐值:

add_header X-XSS-Protection "1; mode=block" always;

参数解释:

  • 1:启用 XSS 保护。
  • mode=block:检测到潜在攻击时,阻止页面加载,而不是仅仅清理恶意内容。

注意:

  • 当前浏览器(如 Chrome 和 Edge)不再支持 XSS 保护头部,建议将 CSP 作为首选防护方案。
  • 如果目标用户中仍有使用旧版浏览器的场景,可以启用此头。

其他安全头建议(可选):

1. Referrer-Policy

控制浏览器在跳转时发送的引用信息。

add_header Referrer-Policy "strict-origin-when-cross-origin" always;

2. Permissions-Policy(前身为 Feature-Policy)

限制浏览器功能(如地理位置、摄像头、麦克风等)的访问权限。

add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always;

检查安全头的生效情况:

    1. 工具推荐:使用以下工具验证头部配置:

    2. 使用 curl 查看响应头:
      curl -I https://your-domain.com

Nginx HttpHeader增加几个关键的安全选项的更多相关文章

  1. Nginx 动态增加扩展

    Nginx 动态增加扩展 1. 先查看目前nginx已加载模块 /home/nginx-1.18.0 # nginx -V nginx version: nginx/1.18.0 built by g ...

  2. nginx日志增加cookie信息

    一.获取全部cookie信息 这个比较方便,直接在nginx.conf文件中添加$http_cookie log_format main '[$time_local] - $remote_addr:$ ...

  3. nginx下增加模块

    1.使用nginx -V确定nginx的编译参数2.下载nginx源码3.下载nginx的扩展模块(此处为memcache模块)4.进入nginx源码目录5../configure  --prefix ...

  4. nginx 编译增加新的模块

    原已经安装好的nginx,现在需要添加一个未被编译安装的模块: nginx -V 可以查看原来编译时都带了哪些参数 原来的参数:--prefix=/app/nginx 添加的参数: --with-ht ...

  5. NGINX动态增加模块,平滑升级

    这是一个小心活,不过,多操作几次,也就熟悉了. 参考URL: https://segmentfault.com/a/1190000006755963 一,安装nginx依赖包. yum install ...

  6. 如何在已经安装好的Nginx上增加新模块

    学习资源: https://blog.csdn.net/dxm2025/article/details/41149865 https://blog.csdn.net/qq_36663951/artic ...

  7. nginx安装部署+增加媒体播放模块

    nginx安装很简单,但是有的时候是已经安装的nginx ,升级增加nginx 模块功能. 最近公司要nginx增加一个可以播放 MP4的模块,安装还算顺利,不说废话上命令. 1 安装依赖 yum i ...

  8. nginx反向代理下thinkphp、php获取不到正确的外网ip

    在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ip /** * 获取客户端IP地址 * @param intege ...

  9. Nginx中文手册

    Nginx 常见应用技术指南[Nginx Tips] 第二版 作者:NetSeek http://www.linuxtone.org (IT运维专家网|集群架构|性能调优) 目 录 一. Nginx ...

  10. Emiller's Advanced Topics In Nginx Module Development

    Emiller的Nginx模块开发指南 By Evan Miller DRAFT: August 13, 2009 (changes) 翻译:Kongch @2010年1月5日 0:04am -- 2 ...

随机推荐

  1. LinkedHashMap原理详解—从LRU缓存机制说起

    写在前面 从一道Leetcode题目说起 首先,来看一下Leetcode里面的一道经典题目:146.LRU缓存机制,题目描述如下: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结 ...

  2. x64汇编——汇编指令

    汇编指令 mov dest, src mov move的简称 将src的内容赋值给dest,类似于dest = src [地址值] 中扩号 [ ]里面放的都是内存地址 一个变量的地址值,是它所有字节地 ...

  3. Kubernetes基础(基本概念、架构)(十)

    一.介绍 Kubernetes(简称 K8S) 的出现是容器化技术发展的必然结果,容器化是应用程序级别的虚拟化,运行单个内核上有多个独立的用户空间实例,这些实例就是容器:容器提供了将应用程序的代码.运 ...

  4. 东方通TongWeb7部署SuperMap iServer War包

    一.软件版本 操作系统: CentOS 7.5.1804 JDK:1.8_201 东方通:TongWeb7.0.4.2 SuperMap iServer:10.2 二.东方通TongWeb7部署流程 ...

  5. docker安装及基本的镜像拉取

    docker 使用存储库安装 卸载它们以及相关的依赖项. yum remove docker \ docker-client \ docker-client-latest \ docker-commo ...

  6. AndroidQ 打通应用层到HAL层---(HIDL服务实现)

    什么是HIDL HIDL 全称为HAL interface definition language(发音为"hide-l")是用于指定 HAL 和其用户之间的接口的一种接口描述语言 ...

  7. iOS定义常量的两种方式define和FOUNDATION_EXPORT

    FOUNDATION_EXPORT的使用方法: 1.h文件 FOUNDATION_EXPORT NSString * const kTestString; 2.m文件NSString * const ...

  8. 06 Word2Vec模型(第一个专门做词向量的模型,CBOW和Skip-gram)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  9. 基于云原生的私有化 PaaS 平台交付实践

    作者:牛玉富,某知名互联网公司专家工程师.喜欢开源 / 热衷分享,对 K8s 及 golang 网关有较深入研究. 本文将解读如何利用云原生解决私有化交付中的问题,进而打造一个 PaaS 平台,提升业 ...

  10. OOP七大原则

    OOP七大原则 开闭原则 抽象约束.封装变化.对扩展开放,对修改关闭. 通过"抽象约束.封装变化"来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的 ...