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

限制方式:

、default-src限制全局 跟链接请求有关的东西,限制他的作用范围
、制定资源类型
资源类型:
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"'>

CSP的更多相关文章

  1. CSP的今世与未来

    一.从两个工具说起 最近Google又推出了两款有关CSP利用的小工具,其一为CSP Evaluator,这是一个能够评估你当前输入的CSP能否帮助你有效避免XSS攻击的工具,其用法非常简单,在输入框 ...

  2. windows2003安装证书服务:csp配置不正确、您没有此密钥容器的写访问权限

    1.填写CA名称后在生成密钥时提示:csp配置不正确或安装不完整.      原因:可能的原因为CS服务(Crysptographic Service)没有启动 . ps:该服务依赖RPC服务,但RP ...

  3. CSP -- 运营商内容劫持(广告)的终结者

    缘由 我们公司最近手机端H5 经常受到商户和用户的投诉,说有广告并且导致不能正常进行操作,我们商户自己当然不会加广告了,但是商户和用户可不管这些了,就认为是我们的问题 探索发现根本 目前我们用的很多浏 ...

  4. 前端安全配置之Content-Security-Policy(csp)

    什么是CSP CSP全称Content Security Policy ,可以直接翻译为内容安全策略,说白了,就是为了页面内容安全而制定的一系列防护策略. 通过CSP所约束的的规责指定可信的内容来源( ...

  5. http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321

    集体智慧勘误表: http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=9780596529321 ------------------- ...

  6. 采用 PAT工具及CSP语言,对一个问题进行自动机 建模

    pat是新加坡国立开发的工具,需要的去官网下http://www.comp.nus.edu.sg/~pat/ ,学了一天,是个不错的自动机验证工具,感觉还不错啊. 验证一个数是否为斐波那契数且为质数 ...

  7. Web 安全之内容安全策略 (CSP)

    内容安全策略 (CSP, Content Security Policy) 是一个附加的安全层,用于帮助检测和缓解某些类型的攻击,包括跨站脚本攻击 (XSS) 和数据注入等攻击. 这些攻击可用于实现从 ...

  8. 利用CSP探测网站登陆状态

    0x00 背景 今天看到zone里有同学发帖说了探测支付宝登录状态的帖子:http://zone.wooyun.org/content/17665 由此我想到了我们parsec的@/fd 半年前提到的 ...

  9. CSP内容安全策略

    在浏览网页的过程中,尤其是移动端的网页,经常看到有很多无关的广告,其实大部分广告都是所在的网络劫持了网站响应的内容,并在其中植入了广告代码.为了防止这种情况发生,我们可以使用CSP来快速的阻止这种广告 ...

  10. Web安全之CSP

    内容安全策略(Content-Security-Policy,简称CSP) 概念: 内容安全策略(CSP)是一种web应用技术用于帮助缓解大部分类型的内容注入攻击,包括XSS攻击和数据注入等,这些攻击 ...

随机推荐

  1. 文献综述七:基于SSM的网上商城的开发与设计

    一.基本信息 标题:基于SSM的网上商城的开发与设计 时间:2018 出版源:Computer Knowledge and Technology 文件分类:对框架的研究 二.研究背景 为了解决现在电商 ...

  2. How to fix the issue that GEM_HOME and/or GEM_PATH not set issue for rvm in mac version 10.12

    add following lines below "export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for s ...

  3. bzoj 5303: [Haoi2018]反色游戏

    Description Solution 对于一个有偶数个黑点的连通块,只需要任意两两配对,并把配对点上的任一条路径取反,就可以变成全白了 如果存在奇数个黑点的连通块显然无解,判掉就可以了 如果有解, ...

  4. 详解ASP.NET MVC Model验证

    ASP.NET mvc的最好的优点之一就是支持Model验证,这个特性很方便你可以选择在定义Model的时候在字段中采用特性进行注解约定,也可以在代码中自己进行手动验证.下面就来细说一下ASP.NET ...

  5. spark scala 例子

    object ScalaApp { def main(args: Array[String]): Unit = { var conf = new SparkConf() conf.setMaster( ...

  6. 在 Linux 上创建第一个 Service Fabric Java 应用程序

    先决条件 开始之前,请安装 Service Fabric SDK.Azure CLI,并在 Linux 开发环境中设置开发群集. 如果使用 Mac OS X,则可使用 Vagrant 在虚拟机中设置 ...

  7. c# 文件名排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  8. oracle UDT 有关数据字典的研究

    1.数据及类型准备 创建了一个自定义类型 create or replace type addr_type as object( street varchar2(30); city varchar2( ...

  9. springboot+mybatis实现登录功能,返回json

    1.新建maven项目(pom) <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  10. [LeetCode]27. Remove Element移除元素

    Given an array nums and a value val, remove all instances of that value in-place and return the new ...