CSP

CSP(Content-Security-Policy): 内容安全策略
 
作用:
1、限制资源获取
2、报告资源获取越权

 

 

限制方式:

1default-src限制全局 跟链接请求有关的东西,限制他的作用范围
2、制定资源类型

 

资源类型:
content-src
img-src
style-src
script-src
frame-src
font-src
media-src
manifest-src

 


比如限制掉外来的js,比如xss攻击

<!--test.html-->
<body>
  <script>
    console.log('inline js')
  </script>
</body>

 

 

// server.js
const http = require('http');
http.createServer(function(req,res){
  console.log('req come', req.url);
  const html = fs.readFileSync('test.html');
  res.writeHead(200,{
    'Content-Type': 'text/html',
    'Content-Security-Policy': 'default-src http: https:'
  })
  res.end(html);
}).listen(8888);
console.log('server listening on 8888');
console.log('http://localhost:8888/');

 

启动server,运行8888端口,发现控制台报错了,这就是Content-Security-Policy限制的作用,那么如果我通过外链的方式建立js呢

 

<!--test.html-->
<body>
  <script>
    console.log('inline js')
  </script>
  <script src="/test.js"></script>
</body>

 

// server.js
const http = require('http');
const fs = require('fs');
 
http.createServer(function(req,res){
  console.log('req come', req.url);
  if (req.url === '/') {
    const html = fs.readFileSync('test.html');
    res.writeHead(200,{
      'Content-Type': 'text/html',
      'Content-Security-Policy': 'default-src http: https:'
    })
    res.end(html);
  } else {
    res.writeHead(200,{
      'Content-Type': 'application/javascript'
    })
    res.end('console.log("loaded script")');
  }
}).listen(8888);
 
console.log('server listening on 8888');
console.log('http://localhost:8888/');

 

 

 

可以发现后面的js打印出来的,内联的js被限制到了

 

限制只能本网站域名下到js,或者某个网站的js
'Content-Security-Policy': 'default-src \'self\' http://baidu.js'

 

限制表单的提交到他网
'Content-Security-Policy': 'form-action \'self\''

 

不想限制所有的链接,只限制script
'Content-Security-Policy': 'script-src http: https:'

 

更多:https://developer.mozilla.org/zh-CN/search?q=csp

 

也可以通过meta标签进行限制,实际效果跟返回头里面是一样的
<meta http-equiv='Content-Security-Policy' content='script-src "self"; form-action "self"'>

 

 

转载于:https://www.cnblogs.com/wzndkj/p/10111994.html

08-31
CSP有多种含义,下面为你介绍常见的两种: ### 内容安全策略(Content Security Policy) 内容安全策略是一种以白名单为基础的安全机制,用于帮助网站开发者检测并减轻某些类型的攻击,包括跨站脚本(XSS)和数据注入等攻击。 #### 应用 - **防范XSS攻击**:通过设置允许加载资源的源,如只允许从特定域名加载脚本和样式表,可以有效防止攻击者注入恶意脚本。例如,网站可以配置只从自身域名加载JavaScript文件,这样即使页面存在XSS漏洞,攻击者也无法注入外部恶意脚本。 - **保护数据完整性**:可以限制页面允许加载的资源类型和来源,确保页面加载的资源都是经过开发者认可的,从而保护数据的完整性。 #### 介绍 CSP通过HTTP响应头(Content - Security - Policy)或`<meta>`标签来设置策略。例如,以下是一个简单的CSP响应头示例: ``` Content-Security-Policy: default-src'self'; img-src *; script-src'self' https://example.com; style-src'self' 'unsafe-inline' ``` 这个策略意味着: - `default-src 'self'`:默认情况下,只允许从当前网站加载资源。 - `img-src *`:允许从任何来源加载图片。 - `script-src 'self' https://example.com`:只允许从当前网站和`https://example.com`加载脚本。 - `style-src 'self' 'unsafe-inline'`:允许从当前网站加载样式表,并且允许内联样式(虽然使用`'unsafe-inline'`会带来一定安全风险)。 ### 通信顺序进程(Communicating Sequential Processes) 通信顺序进程是一种用于描述并发系统中进程间交互的形式化语言,由Tony Hoare在1978年提出。 #### 应用 - **并发系统设计**:在软件开发中,用于设计和分析并发系统,如多线程程序、分布式系统等。通过CSP可以精确地描述进程之间的通信和同步关系,帮助开发者更好地理解和设计并发程序。 - **硬件设计**:在硬件设计领域,CSP可用于描述硬件模块之间的通信和交互,验证硬件系统的正确性。 #### 介绍 CSP的核心概念包括进程、通道和事件。进程通过通道进行通信,通道是进程间传递消息的媒介。事件表示进程之间的同步点,当一个进程执行一个事件时,它必须等待另一个进程也准备好执行相同的事件才能继续执行。 例如,下面是一个简单的CSP伪代码示例,描述了两个进程之间的通信: ```plaintext -- 定义一个通道 chan c; -- 进程P向通道c发送消息 process P = c! "Hello"; SKIP; -- 进程Q从通道c接收消息 process Q = c? x -> print(x); SKIP; -- 并行组合P和Q system = P || Q; ``` 在这个示例中,进程`P`向通道`c`发送消息`"Hello"`,进程`Q`从通道`c`接收消息并打印出来。`SKIP`表示进程执行完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值