什么是内容安全策略(CSP)?
1 个回答
我疯狂地奔跑,只想为你承担一切的伤害,我竖起了山丘,不愿你看见我丑陋的脸庞。凌霄## 作用 - 内容安全策略(Content Security Policy,CSP)是一种浏览器安全机制,用于声明网页中哪些资源可以加载、哪些脚本可以执行。 - 它主要用于缓解 XSS(跨站脚本)和数据注入等攻击。 - 可以把 CSP 理解为资源加载“白名单”:开发者明确指定可信的脚本、样式、图片、接口、框架、字体等来源,不符合策略的资源会被浏览器阻止。 - 即使攻击者发现了可注入点,只要注入内容不在可信来源内,脚本通常也无法执行,从而降低信息泄露或恶意代码执行的风险。 ## 原理 - 服务器通过 HTTP 响应头或页面中的 `meta` 标签向浏览器提供 CSP 规则。 - 浏览器加载和执行资源前,会根据 CSP 指令检查资源来源或执行方式。 - 不符合策略的外部资源、脚本或其他内容会被阻止加载或执行。 - CSP 主要有两种模式: - `Content-Security-Policy`:启用强制限制,违规资源会被拦截。 - `Content-Security-Policy-Report-Only`:不实际拦截,只上报违规行为,通常配合 `report-uri` 使用。 - 配置方式: - 首选通过 HTTP Header 配置,例如:`Content-Security-Policy: default-src 'self'`。 - 也可通过 HTML 的 `meta` 标签配置;HTTP 头与 `meta` 同时存在时,优先采用 HTTP 头中的策略。 - 常见指令包括: - `default-src`:默认资源加载策略。 - `script-src`:控制 JavaScript 来源。 - `style-src`:控制样式来源。 - `img-src`:控制图片来源。 - `font-src`:控制字体来源。 - `object-src`:控制插件等对象资源。 - `media-src`:控制音视频等媒体资源。 - `frame-src` / `child-src` / `frame-ancestors`:控制框架嵌入。 - `form-action`:限制表单提交地址。 - `report-uri`:指定违规报告提交地址。 - 常见指令值包括: - `*`:允许任意来源。 - `'none'`:不允许任何内容。 - `'self'`:只允许同源资源,即协议、域名和端口相同。 - `data:`:允许 `data:` 协议资源,如 base64 图片。 - 指定域名或通配符域名:只允许对应可信域名或其子域资源。 - `'unsafe-inline'`:允许内联资源,但会削弱 CSP 对 XSS 的防护能力。 - 多个 CSP 指令之间用分号分隔,同一指令的多个值用空格分隔;不要重复编写相同指令,否则后面的同名指令可能被忽略。发布于 2026-10-21 21:11 •IP属地 重庆举报评论收藏
公众号进入网站体验更佳

