图解http是一本挺好的协议入门书籍,主要讲http协议,在这里记录一下学习总结
(因为在看书的时候记得文字笔记,所以底下会有许多图片,字丑别嫌弃)
Http的缺点:
1.通信使用明文 2.不验证通信双方的身份 3.无法验证报文的完整性,可能会被篡改报文
加密分类:
1.通信的加密 2.报文内容的加密
Https=Http+加密+认证+完整性保护=Http+SSL/TLS
Https比Http慢:一个原因是通信慢,一个原因是运算处理费时
(SSL是使用最广泛的网络安全技术)
SSL:Secure Sockets Layer 安全套接层
加密手段:
1.共享密钥加密:加密解密用同一个密钥
2.公开密钥加密:用两把密钥
私钥保留,公钥发布,加密时我方用对方公钥加密,解密时对方用自己的私钥解密
两种密钥的特点:共享密钥速度快,公开密钥速度慢,通常混合使用:
先公开密钥加密交换共享密钥,之后用共享密钥加密
公钥也不安全,会被伪造怎么办:
3.由数字认证机构颁发公钥证书(这个是真正的安全,除非认证机构的私钥泄露)
服务器公钥申请给认证机构做认证:
认证机构用自己的私钥对申请的服务器公钥进行数字签名,并将数字签名和服务器公钥绑定生成公钥证书颁布给服务器使用,认证机构的公钥植入浏览器(每个浏览器在安装完成后都内部植入了认证机构的公钥),通过认证机构的公钥解密可以证实服务器公钥的真实性
EV SSL证书:证书的一种,可以证明服务器的身份,可以证明该服务器背后的企业的真实性
(浏览器访问使用该类证书的网站,地址栏呈现绿色)
以上说的都是服务器证书,
还有一种客户端证书:同样的原理,客户端公钥申请给认证机构生成客户端公钥证书
这种是收费的,你有N个用户就要支付给认证机构 N*每个公钥的费用
Bank一般会搞这个,我们用的U盾存私钥,公钥证书在Bank里
还有一种自认证证书,自己给自己的公钥做认证,没什么安全性
认证:认证客户端身份
1.BASIC认证,DIGEST认证
(在访问需要认证的资源时会跳一个弹窗让你填用户名和密码,用户名和密码拼接后Base64加密放入请求首部字段Authorization)
2.SSL客户端认证
就是客户端公钥证书验证,通常会配合表单认证(银行采用)
3.表单认证
Web页面的一个登录页面,你填写用户名,密码就登录认证成功
Cookie保存登录状态,用加盐和散列函数保存密码(防止明文密码泄露)
(平时几乎全都是表单认证)
Http协议性能瓶颈:
1.一次http连接只进行一次http请求
2.每次请求由客户端发起,服务器无法给客户端推送请求
3.每次都要发送冗长的首部
4.首部未经过压缩
5.主体并非强制要求压缩编码
解决:
Ajax:局部更新页面内容
Comet:服务器接到请求挂起,有更新的内容才响应
SPDY:从协议层面改善△
WebSocket协议:全双工通信,基于http,建立WebSocket连接,连接之后服务器可以给客户端推送消息,可以减少通信量
Http2:为了解决1.1版本利用率不高的问题,提出了HTTP/2.0版本。增加双工模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题(HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级);HTTP请求和响应中,状态行和请求/响应头都是些信息字段,并没有真正的数据,因此在2.0版本中将所有的信息字段建立一张表,为表中的每个字段建立索引,客户端和服务端共同使用这个表,他们之间就以索引号来表示信息字段,这样就避免了1.0旧版本的重复繁琐的字段,并以压缩的方式传输,提高利用率。
另外也增加服务器推送的功能,即不经请求服务端主动向客户端发送数据。
当前主流的协议版本还是HTTP/1.1版本。
WebDAV:基于万维网的的分布式创作和版本控制
是一种客户端直接对服务器上的文件资源进行管理操作的系统
(我也不知道这是个啥东西)
常见安全攻击手段:
- 跨站脚本攻击XXS
- SQL注入攻击
- OS命令注入攻击
- HTTP首部注入攻击
- 邮件首部注入攻击
- 目录遍历攻击
- 远程文件漏洞
- 程序设计缺引发的安全漏洞
- 因会话疏忽引发的安全漏洞
- 密码破译
- 点击劫持
- Dos和DDoS
- 后门程序
(这里具体很多我都不知道是个啥,大家想研究网络安全还是自行百度和看书学习吧)
___________________________分割线_________________________________