Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Day366:什么是 CSP? #1200

Open
Genzhen opened this issue Aug 16, 2021 · 0 comments
Open

Day366:什么是 CSP? #1200

Genzhen opened this issue Aug 16, 2021 · 0 comments
Labels
网络&安全 teach_tag

Comments

@Genzhen
Copy link
Collaborator

Genzhen commented Aug 16, 2021

每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案
欢迎大家在下方发表自己的优质见解

二维码加载失败可点击 小程序二维码

扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。


内容安全策略(CSP)

CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截是由浏览器自己实现的。我们可以通过这种方式来尽量减少 XSS 攻击。

通常有两种方式来开启 CSP

  • 一种是设置 HTTP 首部中的 Content-Security-Policy
  • 一种是设置 meta 标签的方式 <meta http-equiv="Content-Security-Policy">

这里以设置 HTTP Header 来举例

  • 只允许加载本站资源
Content-Security-Policy:default-src 'self'
  • 只允许加载 HTTPS 协议图片
Content-Security-Policy: img-src https://*
  • 允许加载任何来源框架
Content-Security-Policy: child-src 'none'

设置的属性还有很多,更多设置属性可以查看 MDN 文档。

对于这种方式来说,只要开发者配置了正确的规则,那么即使网站存在漏洞,攻击者也不能执行它的攻击代码,并且 CSP 的兼容性也不错。

@Genzhen Genzhen added the 网络&安全 teach_tag label Aug 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
网络&安全 teach_tag
Projects
None yet
Development

No branches or pull requests

1 participant