当前位置: 首页 > news >正文

内容安全策略(CSP)详解:Web安全的关键防线

目录

一、CSP基础概念与核心价值

1.1 CSP的核心优势

1.2 主要防护目标

二、CSP策略配置详解

2.1 基本指令集

2.2 典型配置方案

三、高级防护技术与实践

3.1 非ce替代方案

3.2 哈希与nonce应用

3.3 常见配置错误与修正

一、CSP基础概念与核心价值

内容安全策略(Content Security Policy)是一种通过HTTP头或<meta>元素定义的安全标准,用于精确控制网页可以加载哪些外部资源,从根本上减少XSS、数据注入等攻击面。

1.1 CSP的核心优势

  • 资源白名单控制:只允许加载受信任源的资源

  • 内联脚本禁用:消除最常见的XSS攻击载体

  • 数据泄露防护:阻止未经授权的数据外传

  • 报告机制:实时监控潜在违规行为

1.2 主要防护目标


二、CSP策略配置详解

2.1 基本指令集

指令示例值作用说明
default-src'self' cdn.example.com默认资源加载规则
script-src'unsafe-inline' 'strict-dynamic'控制JavaScript加载
style-src'self' fonts.googleapis.com控制CSS加载
img-src* data:控制图片资源
connect-srchttps://api.example.com控制XHR、WebSocket等连接
report-urihttps://report.example.com违规报告接收地址

2.2 典型配置方案

严格策略(推荐):Content-Security-Policy: default-src 'none';script-src 'self' 'sha256-abc123...';style-src 'self' 'unsafe-inline';img-src 'self' data:;font-src 'self';connect-src 'self';form-action 'self';frame-ancestors 'none';report-uri /csp-report;
渐进式部署策略:Content-Security-Policy-Report-Only: default-src 'self';report-uri /csp-report;

三、高级防护

3.1 非ce替代方案

// 传统危险写法
<button onclick="doSomething()">Click</button>
​
// CSP兼容写法
document.querySelector('button').addEventListener('click', doSomething);

3.2 哈希与nonce应用

<!-- 允许特定内联脚本 -->
<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">console.log('Allowed script');
</script>
​
<!-- 允许特定样式 -->
<style nonce="EDNnf03nceIOfn39fn3e9h3sdfa">body { color: red; }
</style>

3.3 常见配置错误与修正

错误配置安全风险正确方案
script-src '*'任意JS执行script-src 'self'
unsafe-inline内联XSS漏洞使用nonce/hash替代
缺失object-src恶意Flash/PDF注入object-src 'none'
宽松的connect-src数据泄露风险明确指定API端点
http://www.dtcms.com/a/285232.html

相关文章:

  • SegNet:一种用于图像分割的深度卷积编码器解码器架构
  • 简单易懂,动态分区分配算法
  • Leetcode刷题营第二十九,三十题:二叉树的中序以及后序遍历
  • mongosh 安装记录
  • ruoyi-cloud启动常见问题处理
  • set、map 比数组,json 对象的性能更好原因分析
  • Python元组(Tuple)指南
  • [RAG system] 信息检索器 | BM25 Vector | Pickle格式 | HybridRetriever重排序
  • 教资科三【信息技术】— 学科知识: 第二章(计算机系统基础)
  • 【程序地址空间】虚拟地址与页表转化
  • 自己训练大模型?MiniMind 全流程解析 (二) 监督微调SFT
  • 【Bluedroid】A2dp Sink初始化(init_sink)源码分析[2]:btif_a2dp_sink_init
  • JAVA几个注解记录
  • 【Spring AI Alibaba实战Demo】通过Spring AI Alibaba接入本地部署的大模型和线上大模型,实现流式简单对话
  • Ubuntu FTP服务搭建与配置
  • Product Hunt 每日热榜 | 2025-07-17
  • druid连接池
  • Xss-labs 靶场lever1~lever8通关练习
  • 第12章 存储类、链接和内存管理
  • window下 wsl 下怎么配置 kimi-k2 驱动 Claude Code
  • 网络通信原理
  • 订货系统能接金蝶吗是什么?
  • FreeRTOS—中断管理
  • 一文学会c++vector
  • Web前端:JavaScript鼠标事件
  • 实习十二——协议分层
  • pytorch小记(三十一):深入解析 PyTorch 权重初始化:`xavier_normal_` 与 `constant_`
  • 基于selenium的pyse自动化测试框架
  • MyUI1.0全新现代化 Vue.js 组件库框架上线
  • CAD断层扫描三维重建插件