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

博客介绍了CSP(Content-Security-Policy)网页安全政策,可防止xss跨域脚本恶意攻击。包括资源加载限制,如default-src规定资源加载条件;属性值、书写格式;script-src特殊值等内容,还强调了script-src和object-src设置的必要性及注意事项。

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

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值