STPace's Studio.

《web 黑客技术揭秘》读书笔记

Word count: 715 / Reading time: 3 min
2018/08/12 Share

第一章 web 安全的关键点

  • 为什么 web 会有安全问题?
    web 的世界是由数据构成的,背后的每一个环节都是数据流。因为数据可能会被“污染”,并未像与其那样被存储,所以就存在了安全问题。

  • web 的安全问题,一部分是在客户端,一部分是在服务端。
    比如:跨站攻击发生在浏览器客户端,SQL 注入攻击一般针对的是数据库,所以 SQL 注入攻击发生在服务端。

  • 在 web 层面上,众多安全策略中,最为重要的一个便是同源策略
    同源策略规定:不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

  • 安全类似木桶原理,短的那块板决定了木桶实际能装多少谁。一个web服务器,如果其上的网站没做好权限分离,没控制好信任关系,则整体安全性就有安全性最差的那个网站决定。

  • CSRF 会借用目标用户的权限去做一些“借刀杀人”的事;而盗取通常是 XSS 跨站脚本攻击最喜欢做的事。

第二章 前端基础

web 安全时间的角色如下:

  • W3C;
  • 浏览器厂商
  • web 厂商
  • 攻击者
  • 被攻击者

解决方案的参与者,除了攻击者以外,其他都要参与,这是一个因果循环。

URL 有个重点是编码方式,有三类:

  1. escape
  2. encodeURI
  3. encodeURIComponent

对应解码方式:

  1. unescape
  2. decodeURI
  3. decodeURIComponent

为什么所 HTML 的世界是松散的?
HTML 由众多标签组成,标签内有对应的各种属性。标签可以不区分大小写,有的可以必须要闭合。
属性的值可以用单引号、双引号、单反引号包围住,甚至不需要引号。
多余的空格Tab 不影响 HTML 的解析。
HTML 里可以内嵌 CSS JavaScript 等内容,而不强调分离。
很多安全问题就是因为松散导致的。

能够执行 Javascript 的位置越多,意味 XSS 发生的面也越广,XSS 漏洞出现的可能性也越大。
JavaScript 脚本除了出现在:

  1. JS 格式的文件里被嵌入
  2. <script></script> 标签内
  3. HTML 的 on 事件中
  4. 一些标签的 href、src 等属性的伪协议中(javascript:

子域 Cookie 机制:
设置 Cookie 时,如果不指定 domain 的值,默认就是本域,也可以指定 domain 为父级域。

  • 好处是可以在不同子与共享 Cookie
  • 坏处就是攻击者控制的其他子域也能读到这个 Cookie

HttpOnly Cookie 机制
设置了 HttpOnly 标志后,仅在 Http 层面上传输 Cookie。客户端无法读写 Cookie,能有效防止 XSS 攻击者获取 Cookie。

CATALOG
  1. 1. 第一章 web 安全的关键点
  2. 2. 第二章 前端基础