Advertisement

内容安全策略( CSP )

阅读量:

请访问CSP官网

当前项目需求要求完成从HDFS服务器上获取文件的任务,并对视频、音频和图片文件的预览展示功能也需进行开发。在开发过程中遇到了Security-Policy media-src self blob:;的错误提示以及base64解码时无法正确解析的问题。

百度了将近几个小时,发现每一个人说清楚具体。最后看了官网一目了然。

内容安全策略(CSP)是一种增强性的安全机制,在网络环境中扮演着重要角色。它通过检测并减弱诸如跨站脚本(XSS)和数据注入攻击等常见的威胁手段来保护敏感信息的安全性。无论是防范数据被盗取、网站内部分泌有害程序还是传播恶意软件这类行为而言,此类威胁都是主要关注点之一。

而针对兼容性问题方面,则有明确的设计考量:即通过被设计为完全兼容未来版本这一特点确保系统稳定性的同时又不会影响现有设备的操作体验;即使未启用相关功能的情况下客户端同样能够与服务器实现良好互动;当网站未设置相应的CSP头信息时则会默认采用标准的安全策略以保障用户体验的一致性和可靠性。

要确保CSP的有效性,请配置您的网络服务器以返回Content-Security-Policy头文件,并包含相应的HTTP头信息。(有时可能会看到关于X-Content-Security-Policy头文件的说明,请注意这些属于旧版本的做法,请无需再以这种方式指定它。)

可以在在web.xml配置。

除此之外, 元素也可以被用来配置该策略, 例如:

复制代码
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
    
    
      
    
    代码解释

配置内容安全策略的方法是什么?
配置内容安全策略包括向网页添加Content-Security-Policy(CSP)头,并设置相应的参数以控制哪些资源(如图片、文件)浏览器可以从该页面加载。例如一个能够上传文件并展示图片的网页,在允许图片来自任何来源的同时仅允许表单提交到指定的目标地址。经过精心设计的内容安全策略能够有效抵御跨站脚本攻击。本文将详细说明如何正确设置此头,并附带了几个示例。

你可以使用 Content-Security-Policy HTTP头部 来指定你的策略,像这样:

复制代码
    Content-Security-Policy: policy
    
    
      
    
    代码解释

policy参数则是一个由多种CSP政策指令构成的字符串。每个政策则由一系列政策指令组成。每个政策指令则描述了针对某一特定类型的资源及其生效范围的具体规定。建议在其他资源类型无符合自身规定的时侯使用该default-src 策略(可参考完整列表)。若要防止内联脚本运行并杜绝eval()调用,则可以选择使用default-src或script-src 指令。以限制来自单一来源的安全代码为例,则可以考虑加入default-src或style-src 指令以进一步加强安全性。

案例:典型情况

复制代码
    Content-Security-Policy: default-src 'self'
    
    
      
    
    代码解释

一名网络管理员允许多个网站内容可自 trust 域名及其下级子域名发布 (其中这些子域名无需与CSP配置域完全一致)

复制代码
    Content-Security-Policy: default-src 'self' *.trusted.com
    
    
      
    
    代码解释

该网站管理者允许多个应用程序的用户在其内容中嵌入来自任意来源的照片, 仅允许将音频和视频文件上传至可信赖资源存储库, 并要求所有脚本都应从选定主机服务器处下载经过验证的安全代码.

复制代码
    Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
    
    
      
    
    代码解释

在这里,各种内容默认仅允许从文档所在的源获取, 但存在如下例外:

  • 图片可以通过任意途径获取,请特别注意其中的' * '通配符。
    • 多媒体文件仅能从media1.com和media2.com这两个网站获取, 对于这些网站的下级网站则无此权限。
    • 可运行脚本文件只能由userscripts.example.com这个网站提供。

为了防止被third-party攻击者窃取用户发出的请求信息,一个线上银行网站的管理者希望通过SSL技术对所有网络数据进行加密传输,并采取相应的安全措施来保障系统数据的安全性。

复制代码
    Content-Security-Policy: default-src https://onlinebanking.jumbobank.com
    
    
      
    
    代码解释

该服务器仅支持HTTPS协议,并且仅限于从onlinebanking.jumbobank.com域名获取文档。

一名在线邮箱管理员希望授权邮件中嵌入HTML内容;同时图片可从任意来源加载;但拒绝所有JavaScript及其他潜在风险元素(不得自定义位置加载)。

复制代码
    Content-Security-Policy: default-src 'self' *.mailsite.com; img-src *
    
    
      
    
    代码解释

对此,请注意此CSP案例中并未做script-src配置。在此csp案例中,默认src指令被用于设置相关参数,并且同样地表明脚本文件仅可从原始服务器获取。

此问题已得到妥善解决:即增添media-src self data: blob:以确保你能使用base64和blob格式显示

全部评论 (0)

还没有任何评论哟~