白帽子讲Web安全(一)浏览器安全

  • 1、同源策略
    • (1)什么是同源策略
    • (2)同源策略的应用
    • (3)跨域访问
  • 2、浏览器沙箱
    • (1)背景
    • (2)原理
    • (3)实现
    • (4)注意
  • 3、恶意网址拦截
  • 4、高速发展的浏览器安全
    • (1)Filter
    • (2)CSP

1、同源策略

(1)什么是同源策略

同源策略/SOP 是由NetScape公司提出的一个著名的安全策略。所谓同源是指 “ 协议+域名+端口 ” 三者相同,即便两个不同的域名指向同一个ip地址,也非同源。浏览器出于安全方面的考虑,只允许本域名下的接口交互,不同源的客户端脚本,在没有明确授权的情况下,不能读写对方的资源。

现在所有支持javascript的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。

当JavaScript被浏览器认为来自不同源时,请求被拒绝

(2)同源策略的应用

在浏览器中,< script>、< img>、< iframe>、< link>等标签都可以跨域加载资源,而不受同源策略的限制。但是带 “src” 属性的标签每次加载时,实际上是由浏览器发起了一次GET请求。不同于XMLHttpRequest的是,通过src属性加载的资源,浏览器限制了JavaScript的权限,使其不能读、写返回的内容。

XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。

(3)跨域访问

同源策略限制了跨域访问,但是随着业务的发展,跨域请求的需求越来越迫切。因此,W3C委员会制定了XMLHttpRequest跨域访问标准。它需要通过目标域返回的HTTP头来授权是否允许跨域访问,因为HTTP头对于JavaScript来说一般是无法控制的,所以认为这个方案可以实施。

对于浏览器来说,除了DOM、Cookie、XMLHttpRequest会受到同源策略的限制外,浏览器加载的一些第三方插件也有各自的同源策略。最常见的一些插件如Flash、Java Applet、Silverlight、Google Gears等都有自己的控制策略。

以Flash为例,它主要通过目标网站提供的crossdomain.xml文件判断是否允许当前 “ 源 ”的Flash跨域访问目标资源。

2、浏览器沙箱

(1)背景

一般而言,对于网络上的网页中的JavaScript代码和插件都是不受信的(除非是经过认证的网站),特别是一些故意设计侵入浏览器运行的主机代码更是非常危险的,通过一些手段或者浏览器中的漏洞,这些代码可能获取了主机的管理权限,这对主机系统来说是非常危险的,所以保证网页本身之外,还需要保证浏览器和浏览器所在的系统不存在危险。

对于网络上的网页,浏览器认为他们是不安全的。因为网页总是存在各种可能性,也许是无意的或有意的攻击。如果有一种机制,将网页的运行限制在一个特定的环境中,也就是一个沙箱中,使它只能访问有限的功能。那么,即使网页工作的渲染引擎被攻击,它也不能获取渲染引擎工作的主机系统中的任何权限,这一思想就是沙箱模型。

(2)原理

“ 沙盒 ”技术(Sandbox)与主动防御技术原理截然不同。主动防御是发现程序有可疑行为时及时拦截并终止运行。“ 沙盒 ”技术则是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“ 沙盒 ”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的 “ 沙盒 ”里充分表演,“ 沙盒 ”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“ 沙盒 ”就会执行 “ 回滚 ” 机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。

(3)实现

在Windows系统中,浏览器结合了DEP、ASLR、SafeSEH等操作系统提供的保护技术,用于对抗内存攻击。与此同时,浏览器开发商还发展出多进程架构。浏览器的多进程架构,将浏览器的各个功能模块分开,各个浏览器实例分开,当一个进程奔溃时,也不会影响到其他的进程。

由于沙箱模型严重依赖操作系统提供的技术,而不同的操作系统提供的安全技术是不一样的,这就意味着不同操作系统上的实现是不一致的。

Google Chrome是第一个采取多进程架构的浏览器。Chrome的主要进程分为:浏览器进程、渲染进程、拓展进程、插件进程。插件进程如flash、pdf、java 等与浏览器进程严格隔离,因此不会互相影响。

Chrome的渲染引擎由Sandbox隔离,网页代码要与浏览器内核进程通信、与操作系统通信都需要通过IPC channel,在其中会进行一些安全检查。

采用Sandbox技术,可以让网页的渲染在一个独立的渲染进程中进行,并且该进程是受限的,如下图:

受限环境只能被某些或者很少的系统调用而且不能直接访问用户数据。

以下是Chrome实现的一个相对完整的Sandbox。
沙箱模型工作的基本单位就是进程。每一个进程对应一个沙箱。相对于单进程浏览器,在发生奔溃时,多进程浏览器只会奔溃当前的Tab页,而单进程浏览器则会奔溃整个浏览器进程。这对于用户体验是很大的提升。

(4)注意

在现今的浏览器中,虽然有多进程架构和Sandbox的保护,但是浏览器所加载的一些第三方插件却往往不受Sandbox管辖。比如近年来在Pwn2Own大会上被攻克的浏览器,往往都是由于加载的第三方插件出现安全漏洞导致的。Flash、Java、PDF、.Net Framework在近年来都成为浏览器攻击的热点。

3、恶意网址拦截

恶意网址拦截的工作原理很简单,一般都是浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网时访问的网址在于此黑名单中,浏览器就会弹出一个警告页面。

4、高速发展的浏览器安全

(1)Filter

IE 8推出XSS Filter功能用以对抗反射型XSS。当用户访问的URL中包含了XSS攻击的脚本时,IE就会修改其中的关键字符使得攻击无法成功完成,并对用户弹出提示框。

(2)CSP

“网页安全政策”(Content Security Policy,缩写 CSP)

  • 被设计为一个完整的框架来防御XSS和CSRF攻击
  • 通常也可以用来控制app和扩展的权限

CSP的实质就是白名单机制,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。CSP大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入白名单的可信主机。

通过在http的响应头中设定CSP的规则,可以规定当前网页可以加载的资源的白名单,从而减少网页搜到XSS攻击的风险。所以说CSP是一个在现代浏览器加载资源白名单的安全机制,只有响应头中白名单里列出的资源才能够被加载、执行。

两种方法可以启用CSP。一种是通过HTTP头信息的Content-Security-Policy的字段。

另一种是通过网页的< meta>标签。

< meta http-equiv=“Content-Security-Policy” content=“script-src
‘self’; object-src ‘none’; style-src cdn.example.org third-party.org;
child-src https:”>

上面代码中,CSP做了如下配置:

  • 脚本:只信任当前域名
  • < object>标签:不信任任何url,即不加载任何资源
  • 样式表:只信任http://cdn.example.org或third-party.org
  • 框架:必须使用HTTPS协议加载
  • 其他资源:没有限制

启用后,不符合CSP的外部资源就会被阻止加载。
Chrome的报错信息。

参考资料:
https://www.cnblogs.com/slly/p/6639173.html
https://www.zhihu.com/question/21979782/answer/122682029

白帽子讲Web安全(一)浏览器安全相关推荐

  1. 白帽子讲web安全之 浏览器安全

    白帽子讲web安全之 浏览器安全 (一些内容属于个人理解,如有错误请不吝指正) 同源策略 概念 所谓同源,一般是指域名.协议.端口相同.一般来说,只有同源的页面可以互相读取彼此的数据,或者改变彼此在浏 ...

  2. 《白帽子讲Web安全》浏览器安全

    客户端脚本安全-浏览器安全 文章目录 客户端脚本安全-浏览器安全 前言 浏览器安全功能 一.同源策略(Same Origin Policy) 介绍 什么是同源策略? 什么是源? 影响源的因素 同源策略 ...

  3. 读《白帽子讲Web安全》之客户端脚本安全(一)

    2019独角兽企业重金招聘Python工程师标准>>> [第2章  浏览器安全] 1.同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能. ...

  4. 读白帽子讲WEB安全,摘要

    读<白帽子讲WEB安全>摘要 文章目录 我的安全世界观 安全三要素-CIA 如何实施安全评估 白帽子兵法 客户端安全 浏览器安全 同源策略 浏览器沙箱 恶意网址拦截 高速发展的浏览器安全 ...

  5. 白帽子讲WEB安全读书笔记(慢慢更新)

    道哥写的白帽子讲WEB安全的读书笔记 文章目录 2020.3.23 ◆ 前言 ◆ 第一篇 世界观安全 1.1 Web安全简史 >> 1.1.1 中国黑客简史 >> 1.1.2 ...

  6. 在学习web安全的小白看过来,这本《白帽子讲web安全》强烈推荐,必读!(附PDF)

    Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 前排提醒:文末有pdf领取 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 ...

  7. 《白帽子讲Web安全》读后感 —— 对道哥的致敬

    <白帽子讲Web安全>读后感 --Deep Blue (一个安全小兵的感受) 这是一篇作业:这是一篇读后感:这是一篇记录安全的感悟:这是一篇对道哥的敬仰:这是我安全启蒙的钥匙...... ...

  8. 《白帽子讲Web安全 -- 纪念版 吴翰清著》读后随笔

    <白帽子讲Web安全 – 纪念版 吴翰清著> 该书大多数内容举例大多数是2010年左右的 相隔11年左右, 但是内容并没有被淘汰, 感觉很适合入门, 因为内容详细且比较基础 当然, 这只是 ...

  9. 初出牛犊的站长读《白帽子讲web安全》有感

    初出牛犊的站长读<白帽子讲web安全>有感 一.前言--一百个读者的心目中有一百个哈姆雷特 前言的作者经历,会是每个初初恋上计算机的学生碰到的事.曾记得当时候,我第一次接触病毒是在初中的科 ...

  10. 学习web安全,强烈推荐这本《白帽子讲web安全》!

    Web是互联网的核心,是未来云计算和移动互联网的最佳载体,因此Web安全也是互联网公司安全业务中最重要的组成部分. 下面来看看几种常见的web漏洞: 1.XSS跨站脚本攻击 XSS跨站脚本攻击,通常指 ...

最新文章

  1. seaborn系列 (12) | 增强箱图boxenplot()
  2. 杭电oj2001题解
  3. ASPxPopupControl出现前一次弹框页面解决方法
  4. QDoc创建帮助项目文件
  5. 2016和2017的区别就是昨晚和今早
  6. WEB前端大神之路之基础篇
  7. python输出进度条 tqdm_python-tqdm进度条
  8. aes 加密_结合RSA与AES实现前后端加密通信
  9. OpenShift 4 - Knative教程 (1) 创建Serverless运行环境
  10. Core Animation 文档翻译 (第二篇)—核心动画基础要素
  11. 金融行业的BI应用分析
  12. 关于插件toastr的学习
  13. 非参数统计的Python实现—— Friedman 秩方差分析
  14. 连接局域网中计算机与传输介质的网络设备是,连接局域网中的计算机与传输介质的网络连接设备是。...
  15. Python Django开发的WebSSH 堡垒机
  16. 文本分析-全角字符串与半角字符串的转换
  17. ERROR ITMS-4238
  18. 叫车难再现,滴滴回应“不加价叫车难”问题
  19. 推荐几个值得关注的技术公众号
  20. linux下开机自动启动,定时运行shell脚本

热门文章

  1. Python语法概念基础
  2. 基于LSTM-Attention模型的光伏电站发电量预估(1)
  3. 批流融合系统-SparkV2/Beam
  4. 2022年--读书笔记
  5. prusai3打印机使用教程_【打印虎原创】Prusa_i3_3D打印机校准图解教程-基础篇
  6. Oracle 数据库表空间容量调整(表空间缩容脚本)脚本
  7. UE5 建模(一)Shapes
  8. 天铁托甲catarinite
  9. 手动卸数+传输文件+入库
  10. leetcode(Array)---11,盛最多水的容器