CSP----Content-Security-Policy 网页安全政策(防止xss 跨域脚本恶意攻击)

CSP----Content-Security-Policy 网页安全政策(防止xss 跨域脚本恶意攻击)

1.资源加载限制:

  • 以下属性为限制指定 资源 的属性
    在这里插入图片描述
    default-src: 以上所有资源 都必须符合 条件 才会加载
    eg:
const http = require('http');  //用于创建 服务的 http模块
const fs = require('fs');  //用于读写文件的 模块标题
//使用 http 的 createServer 方法 创建 一个 服务   该方法 会返回 一个 新建的 http.Server 实例
http.createServer(function(request,response){  //回调 函数
       //一些 请求 的处理 和数据 的返回
    console.log('request start',request.url);

    if(request.url === '/index'){  //判断 若 请求 url 为 /test  则 进行 列 处理
        const html = fs.readFileSync('index.html','utf8'); // 异步读取  文件    并且 编码 为 utf-8

        /**此处还可以 进行 一些 其他的 操作   例如请求 限制  返回头 的 设置
         * **/
        response.writeHead(200,{
            'Content-Type':'text/html',
            'Content-Security-Policy':`default-src 'self';`
        });
        response.end(html);  //将 数据 发送 给 客户端
    }else{
        response.writeHead(200,{
            'Content-Type':'application/javascript',
        });
        response.end('console.log("loading script")'); // response.end() 方法 接收一个 字符串 参数
    }
}).listen(8000,function(){
    console.log('service is on port 8000');
}); //监听8000端口

此处设置了 所有 加载的资源 必须 只能 是 本域 发送的资源 (内嵌js 也不能 执行)

2.属性值:
在这里插入图片描述
以上为上述属性可选值。

3.书写格式

'Content-Security-Policy':"限制属性1   '属性值1'  '属性值2' ...; 限制属性2  ...... "
  • 多次写 同一 限制 属性 只有一个 会奏效

4.script-src 的特殊值
在这里插入图片描述

5.注意:

  • script-src 和 object-src 是毕设的 除非设置了 default-src。因为攻击者只要能注入脚本,其他限制都可以规避。而object-src必设是因为 Flash 里面可以执行外部脚本。
  • script-src 不能使用unsafe-inline关键字(除非伴随一个nonce值),也不能允许设置data:URL。面是两个恶意攻击的例子
<img src="x" onerror="evil()">
<script src="data:text/javascript,evil()"></script>

特别注意 jsonp 的回调函数

<script
src="/path/jsonp?callback=alert(document.domain)//">
</script>
发布了96 篇原创文章 · 获赞 64 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41709082/article/details/95192943