题记:最近渐渐体会到 “ 学习就是一个总结的过程 ”这句话的含义,不知道此刻看到这句话时有没有驻足思考一下自己的学习方式?曾经的我是一个不善于总结,对于别人提到的知识点总是感觉很熟悉,但总是说不出来,甚至是忘记了,这种状态太可怕了。现在我(ˇˍˇ) 想~通过总结的方式,将自己的体会记下来,没事的时候多看一看,我想这也是一种学习吧!希望在不久的以后会遇到一个不一样的自己!你呢?
今天学习总结的是网络中的Cookie及其安全性和HTTP的一些概念
1. Cookie
1.1 什么是Cookie?
Cookie是由Web站点产生的用来存储有关访问该站点的用户信息的存储设备。存储的信息为web站点或用户提供方便,在任何情况下,保留敏感或私有信息都可能会造成隐私问题,因此Cookie存在安全性问题。
Cookie只是服务器传递给客户端且客户端将其存储在本地系统的ASCII文件,当发起新请求时,服务器可以要求浏览器检查是否存在任何Cookie,若存在,则将这些Cookie返回给服务器,浏览器可能地将任何Cookie传递给Web服务器,这可能包括来自不同Web站点的Cookie.
1.2 Cookie的内容?
Cookie的内容受到web服务器的限制,可能包含有关用户及其过去和现在浏览网页的习惯的信息。
通常包括:
- 会话ID——用于维护状态或在浏览器请求间携带授权信息。
- 产生Cookie的时间和日期。
- 过期时间和日期——web站点通过该信息确定该Cookie是否过期,从而忽略。
- 产生Cookie对应的浏览器的IP地址。
- 用户名、口令、追踪信息
1.3 Cookie的类型分为两种:持久和非持久。
-
持久的Cookie:在重启时仍然存在,并保留很长一段时间,存放在硬盘中
可以被读取或修改 -> 容易用于劫持或重放攻击
可能包含用户不知情的敏感数据 -> 很容易被截获
-
非持久的Cookie:存放在内存中,当关闭或重启计算机时将会丢失Cookie信息
1.4 Cookie的工作原理
- 由ASCII文本(每个域最多为80K)保存。
- web服务器向客户端浏览器发送Cookie通常有两种方式:直接将Cookie嵌入针对HTTP请求的响应中,或者通过在web站点执行脚本产生。
1.5 Cookie安全
- 不包含可执行代码
- 不能被攻击者运行
- Cookie无法访问用户硬盘中的任何文件
- 只是用来跟踪用户先前操作活动的一种手段
- 提供一种辅助身份识别的方法
- 不安全,可以被随意创建、修改、删除
- 解决:大多数Cookie使用数学HASH方法识别任何修改,但仍然存在安全缺陷
- 其他安全缺陷:Cookie是基于时间戳或基于不当的随机数据
1.4 持续认证
持续认证即是在用户扩展会话时不必每次都向服务器提交用户名和密码。
持续认证的三种方法:GET行,POST数据,Cookie
- 1.GET行:
- 2.POST数据
- 3.Cookie:Web服务器将信息保存在Cookie中并传递给web服务器,然后浏览器在随后的请求过程中向Web服务器返回该信息,Cookie很容易在用户工作站或网络上被获取和修改。
1.5 缓存
当访问web站点时,浏览器可能会将页面和图片保存在缓存中,可以提高加载Web页面的速度,所有这些页面是以html文件和图片方式保存在工作目录下的硬盘中,用户可以加载并查看这些页面和图片,而不需要访问网络或原始站点,但如果工作站被破坏,将会泄漏用户的隐私。
2. HTTP
2.1 HTTP使用的一系列命令或方法:
- GET:由客户端向服务器发送的要求返回一个对象的请求。
- 可以向服务器传递轻量的信息,这些信息存放在请求的URL中,对用户是可见的。
- 另一方面,可以用于从服务器检索内容,而不是修改内容,不像PUT方法一样存在安全问题,GET方法的安全问题主要是确保服务器应用的任意活动内容和功能的完整性。
- HEAD:由客户端向服务器发送的要求返回某个对象的元信息的请求。HEAD和GET响应的请求的区别是HEAD并没有返回请求对象,而是找出服务器的元信息,并在接受对象前验证其状态和存在性。
- POST:由客户端向服务器句柄发送对象,用于接受POST数据的web页面。发出请求的URI是指服务器上负责接收并处理用户上传信息的程序。
- 将信息从浏览器传递给服务器,由后台传递这些变量及其数据,因此用户难以看到他们,很难获取和修改POST数据。
- PUT:由客户端向服务器发送对象并直接交给服务器的请求,请求的URI指出了客户端希望将数据放置在服务器的位置。因为用户能够在不被干扰的情况下主动修改web服务器的实际内容,这样的做法存在严重的安全问题。
- DELETE:由客户端向服务器发送的删除服务器上对象的请求。请求的URI指出了客户端希望在服务器上删除的对象的位置。
2.2 HTTP的工作原理
- HTTP通过简单的请求和响应模式进行操作,客户端通过产生请求方法和清求对象启动一个会话,服务器处理该请求并向客户端返回适当的响应。
- HTTP/1.0:在web会话过程中为每个接收到的对象创建新的TCP连接,首先返回的是web主页面,然后为每个图片单独建立连接等,与为每个对象创建和结束新的TCP连接的开销相比,HTTP通信开销占的比例最小。缺点效率较低。
- HTTP/1.1:提高数据传输性能,使用的是持久连接,这样每个TCP会话可以传输多个对象,不仅降低与创建或关闭连接相关的开销外,持久连接通过提前知道协商的最大窗口数目以提高窗口大小,否则,每次操作将自己进行慢启动过程并重复协商窗口大小。高效的HTTP/1.1协议只在会话启动时建立新的TCP连接,每个TCP段实际上可以包含多个请求和响应,并将其操作进行排列传输。HTTP/1.1的第二个主要的性能提高是该协议启用了压缩数据传输功能。
2.3 HTTP和HTTPS
- HTTPS:安全的HTTP,是在HTTP协议中加入SSL层,即上文提到的SSL会话。所有传输的内容都进行加密,加密采用的是对称加密,然后在传输前再用服务器的公钥进行非对称加密。
2.4 著名的HTTP的三次握手——建立网络连接
推荐简文(连接在这里)作者写得很好,认真看下来受益匪浅,推荐大家点进去看一看。
虽然这位作者写的简文很好,但是为了让我自己真正读懂,笔者也自己画一下建立连接的过程,加深印象,重点在学习。
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
SEQ(Sequence number顺序号码)
ACK(Acknowledge number确认号码)
2.5 著名的HTTP的四次挥手——断开网络连接
网友评论