浏览器安全

42 阅读3分钟

同源策略

同源策略可以隔离各个站点之间的 DOM 交互、页面数据和网络通信,虽然严格的同源策略会带来更多的安全,但是也束缚了 Web。这就需要在安全和自由之间找到一个平衡点,

  • 所以我们默认页面中可以引用任意第三方资源,然后又引入 CSP 策略来加以限制;
  • 默认 XMLHttpRequest 和 Fetch 不能跨站请求资源,然后又通过 CORS 策略来支持其跨域。

不过支持页面中的第三方资源引用和 CORS 也带来了很多安全问题,其中最典型的就是 XSS 攻击。

XSS 攻击

  1. 通过服务器对输入的内容进行过滤或者转码
  2. 充分利用 CSP
  3. 使用 HttpOnly 来保护重要的 Cookie 信息

CSRF 攻击

  1. CSRF是什么: 跨域请求伪造,通过第三方站点模拟用户请求行为
  2. 如何防范CSRF攻击: 本质就是识别客户端操作是否是用户本人操作
    1>.业务上针对重要操作,需要再次验证,如短信验证码等,确保你是你
    2>.公司内部做好文档管理:源码、接口文档等,减少信息泄露
    3>.服务端针对cookie、session等敏感头信息设置samesite
    4>.敏感接口数据采用加密传输、新增时效性或随机参数,增加请求信息不确定性,比如:CSRF Token参数

沙箱隔离

所有的网络资源都是通过浏览器内核来下载的,下载后的资源会通过 IPC 将其提交给渲染进程(浏览器内核和渲染进程之间都是通过 IPC 来通信的)。然后渲染进程会对这些资源进行解析、绘制等操作,最终生成一幅图片。但是渲染进程并不负责将图片显示到界面上,而是将最终生成的图片提交给浏览器内核模块,由浏览器内核模块负责显示这张图片。

安全沙箱是不能防止 XSS 或者 CSRF 一类的攻击, 安全沙箱的目的是隔离渲染进程和操作系统,让渲染进行没有访问操作系统的权利 XSS 或者 CSRF 主要是利用网络资源获取用户的信息,这和操作系统没有关系的

最常见的攻击方式是利用缓冲区溢出,不过需要注意这种类型的攻击和 XSS 注入的脚本是不一样的。

https

安全层有两个主要的职责:对发起 HTTP 请求的数据进行加密操作和对接收到 HTTP 的内容进行解密操作。

image.png

但是黑客通过 DNS 劫持将极客时间官网的 IP 地址替换成了黑客的 IP 地址,这样我访问的其实是黑客的服务器了,黑客就可以在自己的服务器上实现公钥和私钥,而对浏览器来说,它完全不知道现在访问的是个黑客的站点。所以我们还需要服务器向浏览器提供证明“我就是我”,那怎么证明呢?

image.png

搭建一个 HTTPS 的站点,可以去 freeSSL 申请免费证书。链接我已经放在文中了:中文:freessl.cn/英文:https://…