diff --git a/notes/HTTP.md b/notes/HTTP.md index 8501eff5..bd29a5a4 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -1,58 +1,87 @@ -* [一 、基础概念](#一-基础概念) - * [URI](#uri) - * [请求和响应报文](#请求和响应报文) -* [二、HTTP 方法](#二http-方法) - * [GET](#get) - * [HEAD](#head) - * [POST](#post) - * [PUT](#put) - * [PATCH](#patch) - * [DELETE](#delete) - * [OPTIONS](#options) - * [CONNECT](#connect) - * [TRACE](#trace) -* [三、HTTP 状态码](#三http-状态码) - * [1XX 信息](#1xx-信息) - * [2XX 成功](#2xx-成功) - * [3XX 重定向](#3xx-重定向) - * [4XX 客户端错误](#4xx-客户端错误) - * [5XX 服务器错误](#5xx-服务器错误) -* [四、HTTP 首部](#四http-首部) - * [通用首部字段](#通用首部字段) - * [请求首部字段](#请求首部字段) - * [响应首部字段](#响应首部字段) - * [实体首部字段](#实体首部字段) -* [五、具体应用](#五具体应用) - * [连接管理](#连接管理) - * [Cookie](#cookie) - * [缓存](#缓存) - * [内容协商](#内容协商) - * [内容编码](#内容编码) - * [范围请求](#范围请求) - * [分块传输编码](#分块传输编码) - * [多部分对象集合](#多部分对象集合) - * [虚拟主机](#虚拟主机) - * [通信数据转发](#通信数据转发) -* [六、HTTPS](#六https) - * [加密](#加密) - * [认证](#认证) - * [完整性保护](#完整性保护) - * [HTTPS 的缺点](#https-的缺点) -* [七、HTTP/2.0](#七http20) - * [HTTP/1.x 缺陷](#http1x-缺陷) - * [二进制分帧层](#二进制分帧层) - * [服务端推送](#服务端推送) - * [首部压缩](#首部压缩) -* [八、HTTP/1.1 新特性](#八http11-新特性) -* [九、GET 和 POST 比较](#九get-和-post-比较) - * [作用](#作用) - * [参数](#参数) - * [安全](#安全) - * [幂等性](#幂等性) - * [可缓存](#可缓存) - * [XMLHttpRequest](#xmlhttprequest) -* [参考资料](#参考资料) +- [一 、基础概念](#一-基础概念) + - [URI](#uri) + - [请求和响应报文](#请求和响应报文) + - [1. 请求报文](#1-请求报文) + - [2. 响应报文](#2-响应报文) +- [二、HTTP 方法](#二http-方法) + - [GET](#get) + - [HEAD](#head) + - [POST](#post) + - [PUT](#put) + - [PATCH](#patch) + - [DELETE](#delete) + - [OPTIONS](#options) + - [CONNECT](#connect) + - [TRACE](#trace) +- [三、HTTP 状态码](#三http-状态码) + - [1XX 信息](#1xx-信息) + - [2XX 成功](#2xx-成功) + - [3XX 重定向](#3xx-重定向) + - [4XX 客户端错误](#4xx-客户端错误) + - [5XX 服务器错误](#5xx-服务器错误) +- [四、HTTP 首部](#四http-首部) + - [通用首部字段](#通用首部字段) + - [请求首部字段](#请求首部字段) + - [响应首部字段](#响应首部字段) + - [实体首部字段](#实体首部字段) +- [五、具体应用](#五具体应用) + - [连接管理](#连接管理) + - [1. 短连接与长连接](#1-短连接与长连接) + - [2. 流水线](#2-流水线) + - [Cookie](#cookie) + - [1. 用途](#1-用途) + - [2. 创建过程](#2-创建过程) + - [3. 分类](#3-分类) + - [4. 作用域](#4-作用域) + - [5. JavaScript](#5-javascript) + - [6. HttpOnly](#6-httponly) + - [7. Secure](#7-secure) + - [8. Session](#8-session) + - [9. 浏览器禁用 Cookie](#9-浏览器禁用-cookie) + - [10. Cookie 与 Session 选择](#10-cookie-与-session-选择) + - [缓存](#缓存) + - [1. 优点](#1-优点) + - [2. 实现方法](#2-实现方法) + - [3. Cache-Control](#3-cache-control) + - [4. 缓存验证](#4-缓存验证) + - [内容协商](#内容协商) + - [1. 类型](#1-类型) + - [2. Vary](#2-vary) + - [内容编码](#内容编码) + - [范围请求](#范围请求) + - [1. Range](#1-range) + - [2. Accept-Ranges](#2-accept-ranges) + - [3. 响应状态码](#3-响应状态码) + - [分块传输编码](#分块传输编码) + - [多部分对象集合](#多部分对象集合) + - [虚拟主机](#虚拟主机) + - [通信数据转发](#通信数据转发) + - [1. 代理](#1-代理) + - [2. 网关](#2-网关) + - [3. 隧道](#3-隧道) +- [六、HTTPS](#六https) + - [加密](#加密) + - [1. 对称密钥加密](#1-对称密钥加密) + - [2.非对称密钥加密](#2非对称密钥加密) + - [3. HTTPS 采用的加密方式](#3-https-采用的加密方式) + - [认证](#认证) + - [完整性保护](#完整性保护) + - [HTTPS 的缺点](#https-的缺点) +- [七、HTTP/2.0](#七http20) + - [HTTP/1.x 缺陷](#http1x-缺陷) + - [二进制分帧层](#二进制分帧层) + - [服务端推送](#服务端推送) + - [首部压缩](#首部压缩) +- [八、HTTP/1.1 新特性](#八http11-新特性) +- [九、GET 和 POST 比较](#九get-和-post-比较) + - [作用](#作用) + - [参数](#参数) + - [安全](#安全) + - [幂等性](#幂等性) + - [可缓存](#可缓存) + - [XMLHttpRequest](#xmlhttprequest) +- [参考资料](#参考资料) @@ -223,6 +252,8 @@ CONNECT www.example.com:443 HTTP/1.1 - **500 Internal Server Error** :服务器正在执行请求时发生错误。 +- **502 Bad Gateway** : 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 + - **503 Service Unavailable** :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。 # 四、HTTP 首部 diff --git a/notes/攻击技术.md b/notes/攻击技术.md index 1aa5b741..9eb14212 100644 --- a/notes/攻击技术.md +++ b/notes/攻击技术.md @@ -29,6 +29,44 @@ 另一个用户浏览了含有这个内容的页面将会跳转到 domain.com 并携带了当前作用域的 Cookie。如果这个论坛网站通过 Cookie 管理用户登录状态,那么攻击者就可以通过这个 Cookie 登录被攻击者的账号了。 +## 分类 + +XSS可分为三种不同的类型:反射型XSS、存储型XSS和DOM型XSS。 + +### 反射型XSS + +反射型XSS主要是攻击者将精心构造的带有恶意代码的URL发送给受害者。受害者打开该连接后,经过浏览器的渲染从而遭受攻击。 + +### 存储型XSS + +存储型XSS多出现于带有表单功能的页面,如留言板。攻击者提交带有恶意代码的数据,后端程序未经处理直接插入数据库。受害者用户在浏览该页面时,后端程序从数据库查询数据,未经处理直接传输给浏览器进行渲染,导致受害者遭受攻击。 + +### DOM型XSS + +DOM型的XSS主要是特指攻击者插入的恶意代码修改了DOM环境,而造成服务器响应的代码没有按照原有的逻辑执行。DOM型的XSS没有对服务器响应的代码进行修改,而是在客户端侧影响DOM环境而产生的攻击行为。具体的例子如下: + +```html + +``` + +正常情况下的URL如下: + +``` +http://www.some.site/page.html?default=French +``` + +而DOM型的XSS攻击构造的URL则是: + +``` +http://www.some.site/page.html?default= +``` + ## 危害 - 窃取用户的 Cookie @@ -83,6 +121,14 @@ alert(/xss/); </script> ``` +### 3. 设置CSP(Content-Security-Policy) + +CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截是由浏览器自己实现的。我们可以通过这种方式来尽量减少 XSS 攻击。 +通常可以通过两种方式来开启 CSP: + +- 设置 HTTP Header 中的 Content-Security-Policy +- 设置 meta 标签的方式 + > [XSS 过滤在线测试](http://jsxss.com/zh/try.html) # 二、跨站请求伪造 @@ -185,16 +231,44 @@ ResultSet rs = stmt.executeQuery(); 分布式拒绝服务攻击(distributed denial-of-service attack,DDoS),指攻击者使用两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击。 +## 分类 +拒绝服务攻击大致可以分为两种: + +- 直接向目标发送大量报文,造成目标资源耗尽。 +- 伪造请求报文的源IP地址(受害者IP),借助中间服务器,将响应报文反射到受害目标,这类称为**反射放大攻击**。 + +## 防范手段 + +其实目前DDoS攻击仍然是让安全研究人员最头疼的一种攻击方式。随着DDoS攻击的产业化,只需向攻击服务提供者支付一定的费用,攻击者即可发起大流量的DDoS攻击。而一次大流量的DDoS攻击对于任何组织来说,都是一次沉重的打击。 + +现在,针对DDoS攻击的不存在绝对有效的防御方法,以下的防御措施仅供参考。 + +### 1. 负载均衡 + +负载均衡技术可以有效的缓解单节点负载过大的问题。可以借助负载均衡技术将请求报文分摊到多个服务器上进行处理。假如一台服务器能够轻松处理10Gbps的流量,10台服务器能够处理流量将大幅提升。 + +### 2. 扩大带宽和使用硬件防火墙 + +针对于大企业来说,处理大规模的流量问题并不是很大。但是DDoS攻击会占用企业的带宽,从而影响用户的正常使用。因此,面对突如其来的DDoS攻击,提升带宽不失为一种紧急应对措施。可是,砸钱提升带宽只能缓一时之急。 + +一些硬件防火墙具有检测小流量的DoS攻击和其他网络攻击的能力,可以有效的防御一部分攻击。 + +### 3. 流量牵引 + +在企业流量入口处,做流量镜像。借助机器学习模型和异常检测算法对入网流量进行实时分析。在检测到发生DoS攻击时,借助路由协议(RIP、OSPF和BGP)将流量牵引到DoS流量清洗平台,允许清洗后的流量入网。 + # 参考资料 - [维基百科:跨站脚本](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC) - [维基百科:SQL 注入攻击](https://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A) - [维基百科:跨站点请求伪造](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0) - [维基百科:拒绝服务攻击](https://zh.wikipedia.org/wiki/%E9%98%BB%E6%96%B7%E6%9C%8D%E5%8B%99%E6%94%BB%E6%93%8A) +- [DOM Based XSS](https://owasp.org/www-community/attacks/DOM_Based_XSS) +- [常见六大Web安全攻防解析](https://juejin.im/post/5c446eb1e51d45517624f7db#heading-1) +- [反射型 DDoS 攻击的原理和防范措施](https://blog.csdn.net/whatday/article/details/89453777) +- [浅谈DDoS攻防对抗中的AI实践](https://security.tencent.com/index.php/blog/msg/144) - - -