Nginx HttpHeader增加几个关键的安全选项
针对像德勤这样的专业渗透测试(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;
检查安全头的生效情况:
- 工具推荐:使用以下工具验证头部配置:
- 使用
curl
查看响应头:curl -I https://your-domain.com
Nginx HttpHeader增加几个关键的安全选项的更多相关文章
- Nginx 动态增加扩展
Nginx 动态增加扩展 1. 先查看目前nginx已加载模块 /home/nginx-1.18.0 # nginx -V nginx version: nginx/1.18.0 built by g ...
- nginx日志增加cookie信息
一.获取全部cookie信息 这个比较方便,直接在nginx.conf文件中添加$http_cookie log_format main '[$time_local] - $remote_addr:$ ...
- nginx下增加模块
1.使用nginx -V确定nginx的编译参数2.下载nginx源码3.下载nginx的扩展模块(此处为memcache模块)4.进入nginx源码目录5../configure --prefix ...
- nginx 编译增加新的模块
原已经安装好的nginx,现在需要添加一个未被编译安装的模块: nginx -V 可以查看原来编译时都带了哪些参数 原来的参数:--prefix=/app/nginx 添加的参数: --with-ht ...
- NGINX动态增加模块,平滑升级
这是一个小心活,不过,多操作几次,也就熟悉了. 参考URL: https://segmentfault.com/a/1190000006755963 一,安装nginx依赖包. yum install ...
- 如何在已经安装好的Nginx上增加新模块
学习资源: https://blog.csdn.net/dxm2025/article/details/41149865 https://blog.csdn.net/qq_36663951/artic ...
- nginx安装部署+增加媒体播放模块
nginx安装很简单,但是有的时候是已经安装的nginx ,升级增加nginx 模块功能. 最近公司要nginx增加一个可以播放 MP4的模块,安装还算顺利,不说废话上命令. 1 安装依赖 yum i ...
- nginx反向代理下thinkphp、php获取不到正确的外网ip
在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ip /** * 获取客户端IP地址 * @param intege ...
- Nginx中文手册
Nginx 常见应用技术指南[Nginx Tips] 第二版 作者:NetSeek http://www.linuxtone.org (IT运维专家网|集群架构|性能调优) 目 录 一. Nginx ...
- 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 ...
随机推荐
- JavaScript – Object.groupBy & Map.groupBy
前言 group by 是一个很常见的功能,但 JS 却没有 build-in 的方法,一直到 es2024 才有 Object.groupBy (前生是 Array.prototype.group) ...
- CSS & JS Effect – Loading Button
效果 一个按钮, 点击以后中间出现 loading, 然后旋转. 思路 1. 监听点击, hide text, show loading 2. loading 定位中心 3. loading 是通过 ...
- ASP.NET Core – 读写 Request / Response
需求 常见的需求就是从 request 里面读取一些 information. 比如 request URL, header, cookie, 写入 response header, cookie 实 ...
- Hadoop & Redis未授权漏洞实战——Vulfocus服务攻防
什么是未授权访问漏洞?Hadoop & Redis靶场实战--Vulfocus服务攻防 一.介绍 未授权访问,也称为未经授权的访问或非法访问,是指在没有得到适当权限或授权的情况下,个人或系统访 ...
- SQL注入演示
SQL注入演示 创建一个简易的登录系统/** tb_user 用户表 * 用户登录系统(需在数据库中创建tb_user表 ) */ @Test public void testUserLogin() ...
- Redis 内存突增时,如何定量分析其内存使用情况
背景 最近碰到一个 case,一个 Redis 实例的内存突增,used_memory最大时达到了 78.9G,而该实例的maxmemory配置却只有 16G,最终导致实例中的数据被大量驱逐. 以下是 ...
- [摘录] WebView2 与 JS 交互
https://docs.microsoft.com/zh-cn/microsoft-edge/webview2/gettingstarted/win32 步骤 5-脚本 托管应用还可以将 JavaS ...
- 架构与思维:漫谈高并发业务的CAS及ABA
1 高并发场景下的难题 1.1 典型支付场景 这是最经典的场景.支付过程,要先查询买家的账户余额,然后计算商品价格,最后对买家进行进行扣款,像这类的分布式操作, 如果是并发量低的情况下完全没有问题的, ...
- 数据库小白看这里,这个Oracle数据库知识图谱你值得拥有(含MySQL、PG图谱)
2022年前后,墨天轮社区曾陆续推出PostgreSQL知识图谱.MySQL知识图谱,并得到了大家的广泛好评.此后,便有众多朋友对Oracle知识图谱发起不断"催更".经过近期的内 ...
- EDGE 浏览器占用内存优化
windows + s 搜索 service 打开服务 : 找到下面 edge 三项 双击 把启动类型都改成 手动触发