简单聊聊前端的内容安全CSP策略

admin 2024年11月12日13:12:50评论12 views字数 1094阅读3分38秒阅读模式

之前很详细的讲过前端浏览器的CORS策略,主要是为了解决跨域数据传输的问题,作用于接口请求。而在前端内容加载场景下,浏览器也专门有一个CSP策略来进行约束。

CSP介绍

CSP(Content Security Policy)为内容安全策略,也是通过HTTP Header头来对前端页面所加载内容进行白名单限制。那么很明显,针对的就是加载恶意代码或数据这类场景,但毕竟是面向内容安全,对于XSS这类漏洞只能降低漏洞影响(不允许加载外部恶意脚本),并不能完全消除漏洞危害。

该策略可以通过配置可信资源(JS、IMG、CSS等)来源白名单的方式,来避免其他来源会被引入,其所需配置的HTTP响应头为Content-Security-Policy

CSP指令

CSP的配置是有一套指令的,Header头的示例为:Content-Security-Policy: default-src 'self';这个意思为默认所有资源来源都限制为同源资源,其他源资源不能被前端加载。

除了default-src其他的指令构成通常为标签-src,例如:img-src,通常值可以为'self'或者指定一个URL来作为白名单,当然,部分指令也有一些其他值,这里我就不过多赘述了,都是各种各样的白名单。

也有一个比较特殊的指令report-uri,其值为URL,作用为当出现不符合CSP策略的请求时,就会发起错误报告给report-uri指定的地址,用于记录。

配置CSP

CSP有两种配置方式,通过前端<meta>标签或者通过后端Header返回,并且后端返回的作用优先级是高于<meta>标签的优先级。

后端返回就不用说了,不同的web服务在response的时候写入Content-Security-Policy的值就行

下面看一下<meta>标签的实现方式

<meta http-equiv="Content-Security-Policy" content="  default-src 'self';   script-src 'self' 'https://www.test.com/';   style-src 'self';   img-src 'self';   report-uri /csp-report;">

写在最后

这篇文章就是简单介绍一下CSP策略,在CSP指令部分由于其各类指令太多,并没有一一列举,有相关需求的时候现查即可。

从本人做基础安全的视角来看,该策略对安全防护的作用较小,更多的是对防护能力进行补充,减少影响危害,并不能直接解决风险。

原文始发于微信公众号(飞羽技术工坊):简单聊聊前端的内容安全CSP策略

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月12日13:12:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   简单聊聊前端的内容安全CSP策略http://cn-sec.com/archives/3387198.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息