首页 > web前端 > js教程 > 正文

javascript CSP策略是什么_如何防止跨站脚本攻击?

夜晨
发布: 2025-12-21 14:38:02
原创
854人浏览过
CSP是一种浏览器强制执行的白名单式安全策略,通过HTTP头或meta标签限制资源加载以防止XSS。需禁用内联脚本与eval、改用事件监听、显式声明第三方域名,并配合服务端转义等其他防护措施。

javascript csp策略是什么_如何防止跨站脚本攻击?

JavaScript CSP(Content Security Policy,内容安全策略)是一种浏览器安全机制,用来限制网页中可以加载和执行的资源,核心目标是防止跨站脚本攻击(XSS)。它不依赖代码层的过滤或转义逻辑,而是通过 HTTP 响应头或 <meta> 标签,由浏览器强制执行“白名单式”资源控制。

什么是 CSP 策略?

CSP 是一套声明式的规则,告诉浏览器哪些脚本、样式、图片、iframe、字体等资源允许加载,哪些不允许。例如,禁止内联脚本(<script>alert(1)</script>)和 eval(),只允许从指定域名加载外部 JS 文件。

典型响应头示例:

Content-Security-Policy: script-src 'self' https://cdn.example.com; object-src 'none'; base-uri 'self';
  • script-src 'self':只允许同源脚本(如 <script src="/app.js"></script>
  • script-src https://cdn.example.com:额外允许从该 CDN 加载 JS
  • script-src 'unsafe-inline':⚠️ 不推荐!会重新打开 XSS 通道(禁用内联脚本是 CSP 防 XSS 的关键)
  • object-src 'none':禁用 <object></object><embed></embed><applet></applet>,防止 Flash/Java 类型的旧式攻击

如何用 CSP 有效防止 XSS?

单纯加个 CSP 头不够,必须配合开发习惯调整。重点在于切断 XSS 的常见执行路径:

立即学习Java免费学习笔记(深入)”;

Quicktools Background Remover
Quicktools Background Remover

Picsart推出的图片背景移除工具

Quicktools Background Remover 31
查看详情 Quicktools Background Remover
  • 移除所有内联事件处理器,比如 <button onclick="doSomething()"></button> → 改用 JS 绑定 addEventListener
  • 避免内联脚本块,把 <script>var data = <%= user_input %>;</script> 改成通过 data- 属性或 API 接口传数据
  • 禁用 eval()setTimeout(string)setInterval(string)Function(string) 等动态代码执行方式
  • 对 JSON 数据使用 JSON.parse() 而非 eval(),服务端返回时确保 Content-Type 为 application/json

实际部署建议

不要一步到位启用严格策略,先用 Content-Security-Policy-Report-Only 头收集违规行为:

Content-Security-Policy-Report-Only: script-src 'self'; report-uri /csp-report
  • 浏览器不会阻断违规资源,但会向 /csp-report 发送 JSON 报告,帮你发现遗漏的合法资源
  • 上线前在真实环境跑 3–7 天,根据报告逐步收紧策略
  • 对第三方 SDK(如统计、广告、埋点脚本),显式列出其域名,不要用通配符(https://*.google.com)或宽泛协议(http:
  • 避免滥用 'unsafe-eval' —— Vue/React 的模板编译、Webpack 的 eval devtool 都可能触发它,生产环境应关闭

补充:CSP 不是万能的

CSP 主要防“执行”,不防“注入”。仍需坚持基础防护:

  • 服务端对用户输入做上下文敏感的转义(HTML、JS、URL、CSS 各有不同规则)
  • 使用现代框架(React/Vue/Svelte)的默认 HTML 转义机制,但注意 dangerouslySetInnerHTMLv-html 这类绕过接口
  • 设置 HttpOnly + Secure Cookie,防止 XSS 窃取 session
  • 配合 X-XSS-Protection: 0(现代浏览器已弃用,可忽略)和 X-Content-Type-Options: nosniff 增强防护纵深

基本上就这些。CSP 是 XSS 防御的关键一环,但必须和其他措施配合,且需要适配前端工程实践。不复杂,但容易忽略细节。

以上就是javascript CSP策略是什么_如何防止跨站脚本攻击?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号