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

CSP使用严格设置

文章目录

  • 说明
  • 示例

说明

日期:2025年6月2日。

内容安全政策(MPS)是一个额外的安全层,有助于检测和缓解某些类型的攻击。包括(但不限于)跨站点脚本(XSS)和数据注入攻击。这些攻击用于从数据盗窃到网站破坏或恶意软件分发的各种行为。CPS提供了一组标准的HTTP标头,允许网站所有者声明应允许浏览器在该页面上加载的经批准的内容来源-涵盖的类型包括JavaScript、CSS、HTML框架、字体、图像和可嵌入对象,例如Java小程序、Firefox、音频和视频文件。

不支持CSP的旧版浏览器会自动忽略CSP。

CSP的严格设置只是一个基础,要针对自己的需求来开放设置,但开放的同时,要对需求做好安全措施。

示例

日期:2025年6月2日。
操作系统:ubuntu server v24.04.2 amd64。
应用:

  • node.js v22.15.1
  • npm v11.4.1
  • express(node.js的模块) v5.1.0

增加对express的配置。

// 设置 CSP 中间件
app.use((req, res, next) => {const cspPolicy = "default-src 'none'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; form-action 'self'; frame-ancestors 'none'; report-to csp-endpoint";res.setHeader('Content-Security-Policy', cspPolicy);res.setHeader('Report-To', '{"group":"csp-endpoint","max_age":10886400,"endpoints":[{"url":"/csp-violation-report"}],"include_subdomains":true}');next();
});var reportCount = 0;
// 处理 CSP 违规报告,创建报告接收路由
app.post('/csp-violation-report', express.json({ type: 'application/csp-report' }), (req, res) => {    reportCount++;const report = req.body['csp-report'];    // 记录违规报告console.log('CSP 违规报告:', {documentURI: report.documentURI,violatedDirective: report.violatedDirective,blockedURI: report.blockedURI,originalPolicy: report.originalPolicy});res.status(204).end();
});
// 监控报告率
setInterval(() => {    if (reportCount > 1000) {// 发送告警:可能遭受攻击或策略配置错误console.log(`高频率CSP违规: ${reportFrequency}/小时`);}reportCount= reportCount/ 2; //上一次监测时的报告数量,将一定程度影响下一次检测,且影响度不断降低。
}, 60*60 * 1000); // 每小时检查一次
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/227110.html

相关文章:

  • 电脑桌面便签软件哪个好?桌面好用便签备忘录推荐
  • OpenCV4.4.0下载及初步配置(Win11)
  • 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——3. 服务器软件更新,以及常用软件安装
  • 第十章:Next的Seo实践
  • 使用pdm+uv替换poetry
  • 【CBAP50技术手册】#33 Prioritization(优先级排序):BA(业务分析师)的“焦点加速器”
  • 芝麻酱工作创新点分享1——SpringBoot下使用mongo+Redis做向量搜索
  • Java详解LeetCode 热题 100(23):LeetCode 206. 反转链表(Reverse Linked List)详解
  • 机器学习:支持向量机(SVM)原理解析及垃圾邮件过滤实战
  • mac电脑安装 nvm 报错如何解决
  • 前端自动化测试利器:Playwright 全面介绍
  • Python-120:摇骰子的胜利概率
  • 23. Merge k Sorted Lists
  • 鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(一)
  • DAY41 CNN
  • DAY 41 简单CNN
  • Python----目标检测(训练YOLOV8网络)
  • SpringBoot手动实现流式输出方案整理以及SSE规范输出详解
  • JavaSE知识总结(集合篇) ~个人笔记以及不断思考~持续更新
  • 学习经验分享【40】目标检测热力图制作
  • [HTML5]快速掌握canvas
  • (Python网络爬虫);抓取B站404页面小漫画
  • 智慧零工平台前端开发实战:从uni-app到跨平台应用
  • uniapp路由跳转toolbar页面
  • 通俗易懂解析:@ComponentScan 与 @MapperScan 的异同与用法
  • Java连接Redis和基础操作命令
  • 微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载
  • GODOT引擎学习日志
  • Gartner《Emerging Patterns for Building LLM-Based AIAgents》学习心得
  • 线程间和进程间是如何进行通信