前端HTTP基础《图解HTTP》笔记(3)

HTTP的缺点(HTTPS的解决方案)

1.通信使用明文(不加密),内容可能会被窃听
通信加密:http没有加密机制,通过和SSL(安全套接层)或者TLS(安全层传输协议)组合使用,用SSL建立安全通信线路之后再在这条线路上进行HTTP通信(HTTPS)
内容加密:为了做到有效加密,要求客户端和服务器同时具备加密解密的机制,把报文主体进行加密

2.不验证通信方的身份,因此有可能遭遇伪装
使用SSL不仅提供加密处理,还使用了一种被称为证书的手段,可用于确认方,证书由值得信任的第三方机构颁发,用于证明服务器和客户端是实际存在的。(客户端在开始通信之前先确认服务器的证书,客户端持有证书即可完成个人身份的确认,可用于对Web网站认证)

3.无法证明报文的完整性,所以有可能已遭篡改
常用的就是MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法(需要操纵客户端的用户本人亲自检查验证)SSL提供认证和加密处理以及摘要功能

·HTTP+加密+认证+完整性保护=HTTPS
·原来(http=>tcp=>ip)https(http=>ssl=>tcp=>ip)
·http先与ssl通信再由ssl与tcp通信

HTTPS加密

使用共享密钥:如果能确保共享密钥的安全性则使用共享密钥能提高通信效率
使用公开密钥+私有密钥+CA数字认证的方式保证web安全的HTTPS

1.服务器将自己的公开密钥登陆至数字证书认证机构
2.数字证书机构用自己的私有密钥向服务器的公开密钥署数字签名并颁发公钥证书
3.客户端拿到服务器的公钥证书后,使用数字证书认证机构的公开密钥,向数字证书认证机构验证公钥证书上的数字签名,以确认服务器的公开密钥的真实性
4.使用服务器的公开密钥对报文加密后发送
5.服务器用私有密钥对报文解密
P177 https的通信步骤(《图解http》)
非敏感信息还是使用http通信,只有包含个人信息等敏感使用https加密通信,ssl加密需要消耗cpu和内存,当访问量比较多的Web网站进行加密处理,负载会很大

用户身份认证

BASIC认证(不常用基本认证:不常用容易被窃取)
DIGEST认证(不常用
摘要认证)(若没有验证则返回401附带www-authenticate:Digest realm="DIGEST"字段,nonce=?(随机数))
SSL客户端认证(一般会采用双因素认证,组合验证(一般会与基于表单验证配合)需要费用导致尚未普及 安全系数高)
FormBase认证(常用*基于表单认证(发送登陆信息,账号密码))(利用cookie来管理登陆状态)

基于http协议衍生的

ajax

http在facebook等sns网站上几乎能实时观察到海量用户发布的内容,在很短时间内就会有大量的内容更新,使用ajax有效利用js和dom之间的操作即达到局部Web页面替换加载的异步通信手段,他只更新一部分页面,响应中传输的数据量会因此减少

spdy:介于tcp(ssl)和http之间

多路复用流:通过单一的TCP连接,可以无限制处理多个HTTP请求。所有请求的处理都在一条TCP连接上完成,因此TCP的处理效率得到提高。
赋予请求优先级:SPDY不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题
压缩HTTP首部:压缩HTTP请求和响应的首部。这样一来,通信产生的数据包数量和发送的学节数就更少了
推送功能:支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
服务器提示功能:服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求

WebSocket(双端都可向对方发送报文)

推送功能:服务端可直接向客户端发送数据,不必等待客户端请求
减少通信量:一直保持着连接状态,由于WebSocket首部信息很小,通信量也响应减少了,实现webSocket,在http连接建立后需要完成一次握手
握手请求:使用HTTP的Upgrade首部字段(Upgrade:wesocket) Sec-WebSocket-Key字段内记录着握手过程中必不可少的键值。
Sec-WebSocket-Protocol字段内记录使用的子协议。子协议按WebSocket协议标准在连接分开使用时,定义那些连接的名称。

握手响应:返回101 Switching Protocols的响应
Sec-WebSocket-Accept的字段值是由握手请求中的Sec-WebSocket-Key的字段值生成的,成功握手确立WebSocket连接之后,通信时不再使用HTTP的数据,而采用WebSocket独立的数据

在js中使用websocket api 以实现WebSocket协议下全双工通信
//每50ms发一次数据实例
var socket =new WebSocket(ws://game.example.com:12010/updates)
socket.onopen=function()
  setInterval(()=>{
 if(socket.bufferedAmount==0)
       socket.send(getUpdateData));
},50);

为实现远程文件管理向HTTP/1.1追加了以下的方法

PROPFIND:获取属性
PROPPATCH:修改属性
MKCOL:创建集合
COPY:复制资源及属性
MOVE:移动资源
LOCK:资源加锁
UNLOCK:资源解锁

为配合扩展的方法,状态码也随之扩展。

102Processing:可正常处理请求,但目前是处理中状态
207Multi-Status:存在多种状态
422UnprocessibleEntity:格式正确,内容有误
423Locked:资源已被加锁
424FailedDependency:处理与某请求关联的请求失败,因此不再维持依赖关系
507InsuficientStorage:保存空间不足

CGI在每次请求都要启动新的CGI程序,而Servlet和mod_perl等可直接在web服务器上运行的程序才得以开发,普及。
Servlet常驻内存,因此每次请求的时候可启动相对进程级别更为轻量的Servlet提升效率
HTML样式一旦发生改变,要读取数据内容也变得相对困难,为了保证数据的正确读取,采用XML来记录数据结构

针对Web安全的网络攻击

主动攻击(active attack)代表性:SQL注入攻击和OS命令注入攻击
被动攻击(passive attack) 诱使用户触发设置好的陷阱,陷阱会启动发送以嵌入攻击代码的HTTP请求(会导致用户所持cookie等个人信息被窃取)代表作:跨站脚本攻击和跨站点请求伪造

XXS(跨站脚本攻击):利用虚假输入表单骗取用户个人信息;利用脚本窃取用户Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求;显示伪造的文章和图片
SQL注入攻击:非法查看或篡改数据库的数据;规避认证;执行和数据库服务器业务关联的程序
HTTP首部注入攻击:可能会导致cookie被任意设置,重定向到任意URL,显示任何主体(HTTP响应截断攻击)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值