Skip to main content

浏览器中的安全

web页面安全

同源策略

如果两个URL的协议、域名和端口都相同,就称这两个URL同源。

同源策略表现在三个层面:

  • DOM层面

    同源页面之间可以互相操作DOM。

  • 数据层面

    不同源之间的页面不可以互相访问Cookie、IndexDB、Storage等数据

  • 网络层面

    页面不可以发送和请求数据到不同源的站点。

但是为了web的便利性,浏览器在同源策略上做了一定妥协:

  • 页面中可以引入第三方资源,这导致了XSS安全问题。因此在此开放基础上引入CSP来限制其自由程度。

  • 引入跨域资源共享(CORS),实现跨域请求

  • 引入跨文档消息机制,使得不同源的DOM可以通信。

XSS攻击

黑客往HTML文件中或者DOM中注入恶意脚本,用户在访问这些页面时利用注入的恶意脚本实施攻击的一种手段。

恶意脚本可以窃取 Cookie 信息、监听用户行为(例如输入)、修改DOM等。

XSS攻击分为三种:

  • 存储型攻击

    恶意脚本被提交到网站数据库,用户请求包含了恶意脚本的网页,这个脚本就可以实施攻击。

  • 反射性攻击

    恶意脚本作为网络请求的一部分,例如作为参数,随后网站把恶意脚本放在页面中一起返回给用户,当恶意脚本执行时,就可以实施攻击。

  • 基于DOM的攻击

    黑客通过网络劫持,修改HTML页面的内容,从而实施攻击。

阻止XSS攻击的策略:

  • 服务器对输入脚本进行过滤或转码

    针对存储型和反射型,都可以使用这一方法

  • 充分利用CSP,明确脚本的下载,执行,数据上传的范围,有效降低XSS攻击概率

  • 给 Cookie 设置 HttpOnly 属性,只能通过http请求来获取,JavaScript不能直接获取。

CSRF攻击

CSRF 攻击是黑客利用用户的登录状态,通过第三方的站点来实施攻击。

用户在登录后,黑客诱导用户打开第三方页面,进而执行页面上的攻击代码,或者诱导用户点击第三方页面上的链接。

CSRF不会影响用户自己打开目标页面,用户跳转到第三方页面时,这个页面上会有访问跟目标页面相同信息的接口,那么这个接口就可以使用用户登录后的信息。第三方页面并不会获取这些信息。

发起 CSFR 攻击需要具备三个条件:

  • 目标站点一点更要有CSRF漏洞

  • 用户登录过目标站点,并在浏览器上保持该站点的登录状态

  • 需要用户打开一个第三方站点

阻止CSRF攻击:

  • 充分利用 Cookie 的 SameSite 属性,不允许第三方站点使用该cookie

  • 验证请求的来源站点,利用请求头中的 Referer 和 Origin 属性

  • 使用 CSRF Token

安全沙箱

HTTPS

https安全层作用就是对发送的数据进行加密,对接收的数据进行解密

  1. 对称加密,加密和解密使用相同的密钥

在客户端和服务器开始数据通信前,先协商加解密方式,最后双方获取相同的密钥和加密方式,就可以进行加密通信

对称加密的问题是,双方在协商加解密时交换的信息是明文的,也就是不安全的。

  1. 非对称加密

有公钥和私钥,公钥用来加密,私钥用来解密,或者私钥加密,公钥解密。协商加密方式时,服务器把公钥发送给客户端,客户端用公钥加密数据,服务器用私钥解密数据

缺点:1.效率太低,2. 私钥加密的数据,公钥可以解密,这样不安全

  1. 两种方式结合

使用非对称加密的方式传递对称加密的密钥

客户端把加密信息发送给服务器,服务器也把加密信息和公钥发送给客户端,客户端使用公钥加密一个信息再发送给服务器。然后客户端和服务器,使用这些交换的信息生成对称加密的密钥。

使用对称加密的方式传递数据

  1. 数字证书

作用:1.向浏览器证明服务器的真实身份,防止伪造;2.整数中包含服务器的公钥

客户端和服务器在协商加密方式时,服务器不再返回公钥,而是把数字证书返回给客户端,客户端验证数字证书后,拿到公钥再继续后面的流程