内容安全策略(content-security-policy)

本文详细介绍了Content Security Policy(CSP)的重要性及其在防止点击劫持和XSS攻击中的作用。通过设置HTTP响应头,CSP定义了网页可以加载和执行的外部资源白名单,增强了网页安全性。同时,文章讨论了如何配置CSP,包括script-src、style-src等限制选项,并提到了Content-Security-Policy-Report-Only的使用,以及在实际应用中需要注意的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. iframe

在使用iframe 的时候

<iframe style="border:0;width:100%;height:100%" src="https://github.com/join"/>

请求拒绝
经查 报的是
Refused to frame 'https://github.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'".

Refused to frame ‘https://github.com/’ because an ancestor violates the following Content Security Policy directive: “frame-ancestors ‘none’”.

原因是 点击劫持与安全策略

点击劫持与安全策略

禁止页面被放在iframe里加载主要是为了防止点击劫持(Clickjacking):
防止点击劫持(Clickjacking)
具体的,对于点击劫持,主要有 3 项应对措施:

  • CSP(Content Security Policy,即内容安全策略)
  • X-Frame-Options
  • framekiller

服务端设置

通过设置 HTTP 响应头来声明 CSP 和X-Frame-Options,例如:

# 不允许被嵌入,包括<frame>, <iframe>, <object>, <embed> 和 <applet>
Content-Security-Policy: frame-ancestors 'none'
# 只允许被同源的页面嵌入
Content-Security-Policy: frame-ancestors 'self'
# 只允许被白名单内的页面嵌入
Content-Security-Policy: frame-ancestors www.example.com

# 不允许被嵌入,包括<frame>, <iframe>, <embed> 和 <object>
X-Frame-Options: deny
# 只允许被同源的页面嵌入
X-Frame-Options: sameorigin
# (已废弃)只允许被白名单内的页面嵌入
X-Frame-Options: allow-from www.example.com

还有个与frame-ancestors长得很像的fra

Content-Security-Policy (CSP) 是一种HTTP头部字段,用于帮助Web应用增强安全性,控制网页内容如何加载和执行。CSP允许开发者定义一系列规则,限制浏览器加载资源的来源、类型以及执行的脚本和样式等行为。这有助于防止跨站脚本攻击(XSS)、恶意代码注入、数据泄露等问题。 设置CSP主要包括以下几个关键点: 1. **基本策略**: 使用`content-security-policy`头部字段声明,例如: ``` Content-Security-Policy: default-src 'self'; ``` 这表示只允许从当前源加载内容。 2. **源策略**: `default-src`可以指定一组或单独的源,如: ``` default-src 'self' https: data:; ``` 这里指定了除了'self'之外还允许https和data:协议的资源加载。 3. **资源类型**: 可以使用`script-src`, `style-src`, `img-src`, `frame-src`等指令分别控制不同类型的资源加载来源。 4. **允许特定资源**: `connect-src`控制连接请求(如WebSocket),`font-src`控制字体资源,`media-src`控制媒体资源等。 5. **执行策略**: `script-src-elem`和`script-nonce`用于处理内联脚本,`child-src`管理嵌套框架。 6. **报告策略**: `report-uri`指定当违反策略时发送报告的URL,以便开发者收集安全事件信息。 7. **沙箱模式**: 使用`sandbox`属性或`sandbox`-related directives如`allow-scripts`、`allow-top-navigation`等进一步限制页面行为。 为了确保CSP的有效性,需要在服务器端配置并始终发送这个头部信息给客户端。同时,开发人员也需要遵循CSP策略来编写代码,避免潜在的安全风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ynchyong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值