关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » HTML5 »HTTP 的内容安全策略(CSP)

    HTTP 的内容安全策略(CSP)

    2015-07-19 00:00:00 出处:linux.cn
    分享

    本文介绍的是W3C的Content Security Policy,简称CSP。顾名思义,这个规范与内容安全有关,主要是用来定义页面可以加载哪些资源,减少XSS的发生。

    HTTP 的内容安全策略(CSP)

    Chrome扩展已经引入了CSP,通过manifest.json中的content_security_policy字段来定义。一些现代浏览器也支持通过响应头来定义CSP。下面我们主要介绍如何通过响应头来使用CSP,Chrome扩展中CSP的使用可以参考Chrome官方文档。

    浏览器兼容性

    早期的Chrome是通过X-WebKit-CSP响应头来支持CSP的,而firefox和IE则支持X-Content-Security-Policy,Chrome25和Firefox23开始支持标准的的Content-Security-Policy,见下表。

    响应头 Chrome Firefox Safari IE
    Content-Security-Policy 25+ 23+ - -
    X-Content-Security-Policy - 4.0+ - 10.0(有限的)
    X-Webkit-CSP 14+ - 6+ -

    完整的浏览器CSP支持情况请移步CanIUse。

    如何使用

    要使用CSP,只需要服务端输出类似这样的响应头就行了:

    Content-Security-Policy: default-src 'self'

    default-src是CSP指令,多个指令之间用英文分号分割;’self’是指令值,多个指令值用英文空格分割。目前,有这些CSP指令:

    指令 指令值示例 说明
    default-src ‘self’ cnd.a.com 定义针对所有类型(js、image、css、web font,ajax请求,iframe,多媒体等)资源的默认加载策略,某类型资源假如没有单独定义策略,就使用默认的。
    script-src ‘self’ js.a.com 定义针对JavaScript的加载策略。
    style-src ‘self’ css.a.com 定义针对样式的加载策略。
    img-src ‘self’ img.a.com 定义针对图片的加载策略。
    connect-src ‘self’ 针对Ajax、WebSocket等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为400的响应。
    font-src font.a.com 针对Web Font的加载策略。
    object-src ‘self’ 针对<object>、<embed>或<applet>等标签引入的flash等插件的加载策略。
    media-src media.a.com 针对<audio>或<video>等标签引入的html多媒体的加载策略。
    frame-src ‘self’ 针对frame的加载策略。
    sandbox allow-forms 对请求的资源启用sandbox(类似于iframe的sandbox属性)。
    report-uri /report-uri 告诉浏览器假如请求的资源不被策略允许时,往哪个地址提交日志信息。 特别的:假如想让浏览器只汇报日志,不阻止任何内容,可以改用Content-Security-Policy-Report-Only头。

    指令值可以由下面这些内容组成:

    指令值 指令示例 说明
    img-src 允许任何内容。
    ‘none’ img-src ‘none’ 不允许任何内容。
    ‘self’ img-src ‘self’ 允许来自相同来源的内容(相同的协议、域名和端口)。
    data img-src data 允许data:协议(如base64编码的图片)。
    www.a.com img-src img.a.com 允许加载指定域名的资源。
    *.a.com img-src *.a.com 允许加载a.com任何子域的资源。
    https://img.com img-src https://img.com 允许加载img.com的https资源(协议需匹配)。
    https: img-src https: 允许加载https资源。
    ‘unsafe-inline’ script-src ‘unsafe-inline’ 允许加载inline资源(例如常见的style属性,onclick,inline js和inline css等等)。
    ‘unsafe-eval’ script-src ‘unsafe-eval’ 允许加载动态js代码,例如eval()。

    从上面的介绍可以看到,CSP协议可以控制的内容非常多。而且假如不特别指定’unsafe-inline’时,页面上所有inline的样式和脚本都不会执行;不特别指定’unsafe-eval’,页面上不允许使用new Function,setTimeout,eval等方式执行动态代码。在限制了页面资源来源之后,被XSS的风险确实小不少。

    当然,仅仅依靠CSP来防范XSS是远远不够的,不支持全部浏览器是它的硬伤。不过,鉴于低廉的开发成本,加上也没什么坏处。假如担心影响面太大,也可以像下面这样,仅收集不匹配规则的日志,先观察下:

    Content-Security-Policy-Report-Only: script-src 'self'; report-uri http://test/

    这样,假如页面上有inline的JS,依然会执行,只是浏览器会向指定地址发送一个post请求,包含这样的信息:

    {"csp-report":{"document-uri":"http://test/test.php","referrer":"","violated-directive":"script-src 'self'","original-policy":"script-src 'self'; report-uri http://test/","blocked-uri":""}}
    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。