随手记——前端安全策略 Content-Security-Policy – CSP

随手记——前端安全策略 Content-Security-Policy – CSP

一、问题

1. 问题:前端meta标签中配置了CSP安全策略,导致使用第三方地图插件的时间报错不展示
2. 原安全配置

<meta http-equiv="Content-Security-Policy" content="
      script-src * 'unsafe-inline' 'unsafe-hash' ;
      worker-src blob:; 
      child-src blob: gap:;
      img-src * blob: data:;
      default-src * 'self' unsafe-inline  'unsafe-hash' 'unsafe-eval' gap: content: data: bolb: gw.alipayobjects.com file.scmsafe.com wl.sinovacbio.cn localhost:*;
      connect-src * ; 
      style-src * 'unsafe-eval'  'unsafe-hash' 'unsafe-inline' data: gap: content:" />

3. 引入第三方地图组件后报错

<script type="text/javascript"
  src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak="></script>

WebAssembly.instantiate(): Refused to compile or instantiate WebAssembly module because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src * 'unsafe-inline' 'unsafe-hash'"
4. 修改后的安全配置

<meta http-equiv="Content-Security-Policy" content="
      script-src * 'unsafe-inline' 'unsafe-eval';
      worker-src blob:; 
      child-src blob: gap:;
      img-src * blob: data:;
      default-src * 'self' unsafe-inline  'unsafe-eval' gap: content: data: bolb: gw.alipayobjects.com file.scmsafe.com wl.sinovacbio.cn localhost:*;
      connect-src * data:; 
      style-src * 'unsafe-eval' 'unsafe-inline' data: gap: content:" />

二、CSP讲解

内容讲解借鉴:https://blog.csdn.net/qq_32247819/article/details/124446652

重点纪要
1. 使用方法:在<meta>标签中使用,例如:

<meta http-equiv="Content-Security-Policy" content=" script-src * ">

2.语法
由指令与指令值组成:指令与指令值之间用空格隔开,一个指令下的多个指令值用空格隔开,多个指令之间用分号隔开,例如:content="指令1 指令值a1 指令值a2; 指令2 指令值b;"
3.CSP指令
在这里插入图片描述

4.CSP指令值
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值