浏览器安全

204 阅读3分钟

浏览器和服务器进行数据传递,或者,浏览器获取到数据渲染的过程中,有可能被第三方攻击,这就涉及到了浏览器安全问题,因脚本运行导致的安全问题归为XSS攻击,因利用用户登录身份进行攻击的归为CSRF攻击。

1.XSS(Cross Site Scripting)

XSS指的是往HTML文件中注入恶意脚本,从而在用户浏览器的时候通过注入的脚本对用户进行攻击,比如,植入恶意广告、擦除页面内容、攫取用户的cookei数据、监听用户的输入内容等

(1)XSS的分类
  • 存储型XSS攻击:将包含有脚本的代码存储到服务器,下一次存储的数据被用户获取渲染的方式,比如,评论、留言板等
  • 反射型XSS攻击:用户输入链接进行请求的过程中,如果链接中存在恶意的代码,这些代码在服务器中可能未进行任何处理,又直接返回到浏览器中的场景,就是反射型XSS
  • DOM上的XSS攻击:仅限于页面的节点攻击,服务器没有参与的攻击,例如:植入恶意广告、擦除页面内容等
(2)XSS的防御
  • 前端和后端都对于用户属于的内容做过滤:比如带尖括号的script标签、eval等,有些知名网站的浏览器直接限制了带尖括号的script标签
  • 利用CSP安全策略:以白名单的机制对网站加载或执行的资源起作用,可以通过HTTP头信息或者meta元素定义。
  • 使用HttpOnly策略:可以在服务器端设置HttpOnly的属性来阻止恶意脚本对于cookie的访问和获取。

image.png

2.CSRF(Cross-site request forgery)

CSRF是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作,用户首次登录的时候会获取到认证信息,这个认证信息一般是有时效性的,假如10分钟过期,那么,这10分钟内,也许用户就点击了恶意链接,这个链接可能是积分、某公司的币、或者转账参数等。虽然该行为是用户不知情的情况下点击的,但是,当前访问服务器所携带的登录信息,会让服务器端认为就是用户的主动行为。
防御措施:

  • 验证请求站点的来源:服务器在请求的过程中判断第三方链接的来源,先判断origin,再判断referer
  • 设置cookie的SameSite属性:服务器在响应头中设置其SameSite属性,设置了Strict或者Lax基本就可以消除CRSF
  • 设置动态的token:服务端返回页面资源的时候,将动态token(字符串)注入到浏览器,浏览器下次访问服务器时,将动态的token传递给服务器,服务器进行比对,如果没有token,那么直接拒绝访问