上一篇 下一篇 分享链接 返回 返回顶部

前端:浏览器Content Security Policy 安全策略介绍和用法-双翼鸟数据开发者社区-双翼鸟数据

发布人:admin 发布时间:6小时前 阅读量:7

Content Security Policy(CSP)是现代浏览器提供的一种重要的安全机制,它能有效防止XSS攻击、数据注入等安全威胁。今天我们就来详细了解一下CSP,并通过几个可以直接运行的示例来掌握它的用法。

什么是CSP?

Content Security Policy(内容安全策略,简称 CSP)是现代浏览器提供的一项重要安全机制,主要作用是帮助网站防范多种常见的客户端攻击,尤其是跨站脚本攻击(XSS)和数据注入攻击。

除了 Internet Explorer 之外,目前所有主流现代浏览器均已原生支持 CSP。所以在绝大多数场景下,开发者可以放心地在项目中启用并使用这一安全功能。

CSP 的核心机制是通过设置 HTTP 响应头 Content-Security-Policy(或通过 HTML 的 标签),定义哪些外部资源可以被加载和执行。当浏览器解析页面时,会先检查该策略配置,再决定是否允许加载指定的资源。

例如,当页面需要加载 JavaScript 文件、图片、样式表、字体或 iframe 等资源时,浏览器会依据 CSP 策略进行校验:只有符合策略规定的资源才会被加载;不符合的则会被阻止,并在开发者控制台中记录相关警告或错误信息。

为什么需要CSP?

想象一下,如果你的网站允许用户输入评论,而恶意用户输入了这样的脚本:

代码语言:javascript
代码运行次数:0
运行
复制

传统的防御手段虽然有效,但CSP提供了更深层的保护——它通过白名单机制,告诉浏览器只加载和执行来自特定来源的资源。

CSP两种设置CSP的方式

通过HTTP响应头设置(推荐)

代码语言:javascript
代码运行次数:0
运行
复制
Content-Security-Policy: default-src 'self'

通过Meta标签设置

代码语言:javascript
代码运行次数:0
运行
复制

常用指令说明

default-src:默认策略

script-src:控制JavaScript

style-src:控制CSS

img-src:控制图片

connect-src:控制Ajax请求

实战示例

下面我们通过两个个可以直接运行的示例来理解CSP的工作原理。

示例1:没有CSP保护的基础HTML页面

代码语言:javascript
代码运行次数:0
运行
复制



    
    
    
    


    

示例1:没有CSP保护的页面


    
    

XSS攻击演示

这个页面没有CSP保护,尝试输入恶意脚本:

警告:这个页面没有CSP保护,恶意脚本可以执行!


    
    

外部资源加载



    

具体效果如下图:

加载外部图片失败

示例2:启用严格CSP保护的页面

代码语言:javascript
代码运行次数:0
运行
复制



    
    
    
    
    
    


    

示例2:启用CSP保护的页面


    
    

XSS攻击防护演示

这个页面有CSP保护,尝试输入恶意脚本:

安全:这个页面有CSP保护,恶意脚本会被阻止!


    
    

外部资源加载限制



    
    

  • 页面启用了CSP保护
  • 使用了nonce属性允许特定脚本执行
  • 阻止了外部脚本加载(只允许同源脚本)
  • 允许加载HTTPS图片
  • 阻止了eval()等危险函数
  • 使用了安全的textContent而不是innerHTML
  • 展示了CSP如何防止XSS攻击

具体如下图:

加载外部脚本

加载外部图片

启动eval

CSP配置详解

常用指令值

'self':只允许同源资源

'none':禁止所有资源

'unsafe-inline':允许内联脚本/样式(不推荐)

'unsafe-eval':允许eval等动态代码执行(不推荐)

https::允许所有HTTPS资源

总结

CSP是一项强大的安全技术,实际应用过程中应该记住以下原则:

渐进实施:从报告模式开始,逐步转向强制执行

最小权限原则:只授予必要的权限

持续监控:定期检查违规报告,优化策略

平衡安全与功能:在安全性和开发便利性之间找到平衡点

大家如果使用过程中有问题的话欢迎评论区沟通交流!

目录结构
全文
QQ群 QQ群
服务热线: 400-9966924
电子邮箱: 2947999888@qq.com
关于Centos官网停止维护导致源失效解决方案

重大通知!用户您好,以下内容请务必知晓!


由于CentOS官方已全面停止维护CentOS Linux项目,公告指出 CentOS 7和8在2024年6月30日停止技术服务支持,详情见CentOS官方公告。
导致CentOS系统源已全面失效,比如安装宝塔等等会出现网络不可达等报错,解决方案是更换系统源。输入以下命令:


bash <(curl -sSL https://www.synidc.cn/jb/yum.sh)

然后选择中国科技大学或者清华大学,一直按回车不要选Y。源更换完成后,即可正常安装软件。


如需了解更多信息,请访问: 查看CentOS官方公告


查看详情 关闭
网站通知