浏览器安全可以分为三大块——Web 页面安全、浏览器网络安全和浏览器系统安全
Web 页面安全
为确保页面安全,浏览器有严格的同源策略,(不同页面之间的 DOM 操作、数据访问以及网络交互(XMLHttpRequest)),这个规则过于严格,为此浏览器出让了部分安全性:1、页面中可以嵌入第三方资源,同时以CSP策略限制其自由程度,如防止XSS等问题;2、跨域资源共享CORS和跨文档消息机制 postMessage
- XSS
分为存储型XSS、反射型XSS及DOM型XSS,前两者属于服务端漏洞,后者属于浏览器端漏洞
预防措施:
1、过滤或者转码;2、充分利用CSP策略(如限制只能加载哪些域下的资源,不能提交数据到哪些域等);3、利用HttpOnly属性保护 cookie,加了该属性,则cookie不能通过JS方式获取,只能用于发送 http 请求 - CSRF
CSRF 攻击就是黑客利用了用户的登录状态,并通过第三方的站点来做一些坏事。和 XSS 不同的是,CSRF 攻击不需要将恶意代码注入用户的页面,仅仅是利用服务器的漏洞和用户的登录状态来实施攻击。
发起 CSRF 攻击的三个必要条件:第一个,目标站点一定要有 CSRF 漏洞;第二个,用户要登录过目标站点,并且在浏览器上保持有该站点的登录状态;第三个,需要用户打开一个第三方站点,可以是黑客的站点,也可以是一些论坛
预防措施:
1、充分利用好 Cookie 的 SameSite 属性
2、HTTP 请求头中的 Referer 和 Origin 属性,优先验证origin,且 origin 中不包含请求路径,referer 可能会包含
3、CSRF Token
系统安全
启动浏览器,在系统层面讲也是启动了一个进程(多浏览器架构的chrome则是启动了多个进程),一旦浏览器本身存在漏洞,黑客就可以利用这个漏洞获取进程控制权,进而获取操作系统控制权。为解决这种问题,chrome 采用了多进程架构,将渲染进程放在沙箱里执行,沙箱技术隔离了进程对操作系统的访问控制,从而就可以防止通过页面来控制操作系统的目的
网络安全
主要就是用上 https,https 借助SSL/TLS 以及数字证书、数字签名等技术可以保证数据加密传输和可靠访问,而不是明文传输、以及被窃取的问题。