关于javascript:浏览器工作原理与实践七

5次阅读

共计 1389 个字符,预计需要花费 4 分钟才能阅读完成。

XSS

XSS跨站脚本,黑客往 HTML 文件或 DOM 中注入歹意脚本,从而在用户浏览页面利用注入脚本对用户施行攻打。

  1. 窃取 cookie 信息,通过 document.cookie,而后通过XMLHttpRequest 加上 CORS 发送给歹意服务器,拿到 cookie 能够模仿登录转账
  2. 监听用户行为,用 addEventListener 监听键盘事件,信用卡信息,发送歹意服务器,作守法的事
  3. 批改 DOM 人为造假的登录窗口,坑骗用户输出用户名和明码
  4. 页面生成浮窗广告,影响用户体验

XSS分为存储型 XSS 攻打、反射型 XSS 攻打和基于 DOMXSS攻打 3 种形式注入歹意脚本。
存储型 XSS 攻打:黑客将恶意代码放到有破绽的服务器,用户拜访了有恶意代码的页面,上传用户信息到歹意服务器
反射型 XSS 攻打:歹意脚本成了用户发送申请的一部分 (get 地址上),而后网站又把恶意代码返回给用户,页面执行时做歹意操作
基于 DOMXSS攻打:通过 wifi 路由器,本地恶意软件劫持在传输过程中批改页面

首先都是先往浏览器注入歹意脚本,而后再通过歹意脚本将用户信息发送到歹意服务器。
解决:

  1. 服务器对输出脚本进行过滤或转码
  2. 充分利用CSP,限度加载其它域资源,禁止向第三方提交数据,禁止执行内联和未受权脚本,提供上板机制
  3. 应用 httpOnly 属性,无奈通过 document.cookie 读出来
  4. 减少验证码
  5. 限度输出长度

    CSRF

    CSRF跨站申请,伪造利用用户的登录状态通过第三方站点做一些好事。

  6. 主动发动 get 接口,比方接口在 img,src 当加载图片主动去发动申请
  7. 主动发动 post,暗藏表单并且内容是转账接口,加载到JS 提交表单
  8. 诱惑用户点链接,点图片地址是转账接口

CSRF不须要将恶意代码注入页面,仅是利用服务器的破绽和用户的登录状态施行攻打。
条件:

  1. 指标站点肯定要有破绽
  2. 用户登录过指标站点,并在浏览器放弃有站点的登录状态
  3. 须要用户关上一个三方站点 (黑客or 论坛),要害是找到服务器破绽

解决:

  1. 利用 cookieSameSite属性,cookie是浏览器和服务器之间保护登录状态的要害数据。
    通常 CSRF 攻打都是从第三方站点发动的,最好能实现从第三方站点发送申请时禁止 cookie 的发送。因而在浏览器通过不同源发送 http 申请时,有如下区别:
    1. 第三方发动的申请,须要浏览器禁止发送某些要害 cookie 数据到服务器
    2. 同一站点发动的申请,须要保障cookie 数据失常发送
    通过 Set-CookieSameSite属性值:Stric最严,齐全禁止第三方 cookieLax:链接关上get 会带 cookiepost,img,iframe, 加载的url 不会带。none:都会带。
  2. 验证申请的起源点, 在服务器端验证申请起源的站点,服务器能够禁止第三方站点申请。
    从申请头中 RefererOrigin判断第三方。Referer会蕴含门路信息,会优先判断Origin
  3. CSRF token:
    1. 浏览器发送申请时,服务器生成 CSRFToken 植入返回的页面中。2. 浏览器发动转账时要带上页面的 CSRFToken。

页面平安问题次要起因是浏览器为同源策略开的 2 个后门:一是页面能够任意援用 第三方源。二通过 CORS 跨域申请。
基于这些,又引入了 CSP 限度页面任意引入内部资源、引入 HttpOnly 来禁止申请发送一些要害 cookie、引入SameSiteOrigin,来避免 CSRF 攻打。

正文完
 0