浏览器安全学习笔记

前言

作为一个菜鸟渣渣,自以为懂得很多,然而在一次面试交谈中被问及浏览器相关安全策略,是一脸懵逼。脑袋里跑的是什么url、协议、用户访问过程啥的,能想到一点,但是很乱,在此自我批评。安全的范围太广了,感觉什么都要涉及,所以什么都会学习一点,但是没有系统性的思维,当朋友问及一个东西,虽然学过,但是回想不起来,只是熟悉。需要作一提醒才焕然大悟。(就像前女友那般熟悉,却又陌生~~)。

浏览器安全

作为一个搞网络安全的,浏览器安全是不可或缺的知识。一方面,浏览器天生就是一个客户端,如果具备了安全功能,就可以像安全软件一样对用户上网起到很好的保护作用;另一方面,浏览器安全也成为浏览器厂商之间竞争的一张底牌,浏览器厂商希望能够针对安全建立技术门槛,获得竞争优势。
为了应对攻击,浏览器也增添了许多安全特性。(1)各浏览器都纷纷开启了数据执行保护(DEP)和(2)地址空间分布随机化(ASLR)。同时,为了降低恶意代码运行时的权限,浏览器也在试图(3)降低浏览器网页进程的权限,例如(3.1)IE的保护模式和Chrome的沙箱。为了防止用户受到脚本注入的困扰,(4)IE和Chrome也各自添加了XSS过滤器。为了防止用户受到钓鱼网站或者恶意网站的干扰,(5)浏览器也添加了形如SmartScreen Filter、恶意网站拦截的功能。同时,浏览器也在兼容新的安全特性,(6)例如DNT(不要追踪、Do Not Track)和(7)防止点击劫持的HTTP头、(8)CSP安全策略等

一、同源策略

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

所谓同源即“三个相同”:协议相同、域名相同、端口相同。
举例来说,http://www.example.com/dir/page.html这个网址,协议是http://,域名是www.example.com,端口是80(默认端口可以省略)。它的同源情况如下。
在这里插入图片描述
同源策略的目的是为了保证用户信息的安全,防止恶意的网站窃取数据。
同源策略具体含义:
一是来自一个源的js只能读写自己源的存储不能读写其他源的存储,存储包括Cookie、Session Storage、Local Storage、Cache、Indexed DB等。
二是来自一个源的js只能读写自己源的DOM树不能读取其他源的DOM树。即如果开始讨论,iframe内外层不同源就不能相互操作,外层想获取内层的内容只能使用点击劫持配合;实现原理亦如前所述未知。
三是一般而言来自一个源的js只能向自己源的接口发送请求不能向其他源的接口发送请求。当然其实本质是,一方面浏览器发现一个源的js向其他源的接口发送请求时会自动带上Origin头标识来自的源,让服务器能通过Origin判断要不要向应;另一方面,浏览器在接收到响应后如果没有发现Access-Control-Allow-Origin允许发送请求的域进行请求那也不允许解析。
四是来自一个源的js不能随意操作浏览器之外的资源。

同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收。

二、浏览器沙箱

Sandbox即沙箱。泛指“资源隔离类模块”。Sandbox的设计目的一般是为了让不受信任的代码运行在一定的环境中,限制不可信的代码访问隔离区之外的资源。如果一定要跨越sandbox边界产生数据交换,则只能通过指定的数据通道,比如经过封装的api来完成,在这些api中会严格检查请求的合法性。
对于浏览器来说,采用sandbox技术,无疑可以让不受信任的网页代码、javascript代码运行在一个受限制的环境中,从而保护本地桌面系统的安全。与之相似的还有一个浏览器多进程架构,将浏览器的各个功能模块分开,各个浏览器实例分开,当一个进程崩溃时,也不会印象其他进程。多进程最明显的一个好处就是相对于单进程浏览器,发生崩溃时,多进程浏览器只会崩溃当前的tab页,而单进程浏览器则会崩溃整个浏览器进程。这对于用户体验是很大的提升。

三、恶意网址拦截

目前各个浏览器的拦截恶意网址的功能都是基于“黑名单”的方式。一般浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网时访问的网址存在此黑名单中,浏览器弹出一个警告页面。
常见的恶意网址分为两类:挂马网站和钓鱼网站
PhishTank 是互联网上免费提供恶意网址黑名单的组织之一,它的黑名单由世界各地的志愿者提供,且更新频繁。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值