Nginx配置Http响应头安全策略_nginx content-security-policy

2401_84181383 2024-06-23 17:07:11 阅读 57

防止跨站脚本攻击(XSS):通过设置CSP(Content-Security-Policy),可以限制浏览器只加载和执行来自特定来源的脚本,从而防止恶意脚本注入和执行。 防止点击劫持攻击:通过设置X-Frame-Options响应头,可以防止网页被嵌入到其他网站的iframe中,避免用户在不知情的情况下触发恶意代码。 提高网站安全性:通过设置STS(Strict-Transport-Security)响应头,强制浏览器使用HTTPS协议与服务器通信,从而防止信息在传输过程中被窃取或篡改。 防止XSS攻击:通过设置X-XSS-Protection响应头,可以启用特定的XSS过滤器,以防止XSS攻击。 保护用户隐私:通过设置Referrer-Policy响应头,可以控制浏览器在请求时发送的referrer信息,以保护用户的隐私。 限制API和功能使用:通过设置Permissions-Policy响应头,可以限制网站可以使用的API和功能,从而降低潜在的安全风险。 防止信息泄露:将Server和X-Powered-By响应头设置为“NONE”或删除它们,可以防止暴露服务器类型和软件版本信息,从而降低潜在的安全风险。

二、Nginx配置概览

server {

server_name xxxxx.com;

listen 443 ssl;

add_header Content-Security-Policy "default-src ‘self’ data: *.xxx.com ‘unsafe-inline’ ‘unsafe-eval’ mediastream: ";

add_header X-Content-Type-Options “nosniff”;

add_header X-XSS-Protection “1; mode=block”;

add_header X-Frame-Options SAMEORIGIN;

add_header Strict-Transport-Security “max-age=63072000; includeSubdomains; preload”;

add_header Referrer-Policy “origin”;

add_header X-Download-Options noopen;

add_header X-Permitted-Cross-Domain-Policies none;

}

三、内容安全策略Content-Security-Policy(CSP)

应对漏洞:XSS攻击

Content-Security-Policy (CSP) 是一种网页安全策略,用于减少和防止跨站点脚本 (XSS)、点击劫持等攻击。CSP通过限制网页可以加载或执行的资源的来源来保护网站免受恶意代码的攻击。它可以通过HTTP头或网页中的标签来实现。

CSP通过指定可信任的资源来源,如脚本、样式表、字体、图像和其他嵌入的内容,来限制网页中可以加载的内容。如果网页中引用了来自未被信任的源的资源,如恶意脚本或非法广告,浏览器将拒绝加载这些资源,从而提供额外的安全性。

CSP还提供了其他功能,如报告机制,允许网站管理员获取有关被阻止或破坏的内容的报告,并通过这些报告来改进网站的安全性。

在 Nginx 中配置 Content-Security-Policy,可以通过在配置文件中添加 add_header 指令来实现。

server {

listen 80;

server_name example.com;

location / {

add_header Content-Security-Policy “default-src ‘self’; script-src ‘self’ https://ajax.googleapis.com; style-src ‘self’ https://fonts.googleapis.com;”;

其他配置…

}

}

上述示例中,为所有请求设置了一个简单的 CSP 策略,允许从同一域名加载资源,并允许从 Google 的 AJAX API 和 Google 字体加载脚本和样式

3.1CSP指令集及其说明
指令 说明
default-src 设置网站默认的安全策略,适用于未指定安全策略的资源。
connect-src 控制页面可以建立连接的来源,防止恶意站点通过连接发起攻击。
font-src 控制字体资源的加载来源,防止加载恶意字体文件。
form-action 控制表单提交的目标URL,防止跨站请求伪造(CSRF)攻击。
frame-ancestors 控制嵌套的frame或iframe的来源,防止点击劫持攻击。
frame-src 控制frame或iframe中加载的页面的来源,防止嵌套的恶意页面的攻击。
image-src 控制图片资源的加载来源,防止加载恶意图片文件。
media-src 控制媒体资源(如音频、视频)的加载来源,防止加载恶意媒体文件。
object-src 控制object标签和embed标签中加载的内容的来源,防止加载恶意内容。
script-src 控制JavaScript脚本的加载来源,防止执行恶意脚本。
style-src 控制CSS样式表的加载来源,防止加载恶意样式表。
report-uri 指定报告异常信息的URI,方便管理员及时发现和处理安全问题。
upgrade-insecure-requests 要求浏览器将所有HTTP请求升级为HTTPS请求,提高安全性。
sandbox 对页面中的某些元素进行限制,防止恶意代码对其进行操作。

注:以下是一些常见参数及其说明和示例。可以根据具体需求进行配置。

3.2default-src指令的参数、说明和示例
参数 说明 示例
self 允许加载同源的资源 default-src 'self';
* 允许加载任意来源的资源 default-src '*';
none 不允许加载任何资源,是最严格的设置 default-src 'none';
unsafe-inline 允许内联脚本和样式,但存在安全风险 default-src 'unsafe-inline';
unsafe-eval 允许使用eval()函数执行代码,存在安全风险 default-src 'unsafe-eval';
strict-dynamic 只允许动态生成脚本和样式,不允许内联脚本和样式 default-src 'strict-dynamic';
https: 只允许加载HTTPS资源 default-src 'https:';
data: 允许加载data:协议的资源,如文件上传等 default-src 'data:';

以下是一个示例(允许从同一域名加载资源)ÿ



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。