HTTP协议中的请求和响应不会对通讯方的身份进行确认,也就会存在“跟我通讯的服务器是否就是我申请通讯的服务器,返回的响应是否真的返回到现实提出申请的客户端”这一问题。这就存在被伪装的隐患。听起来大概有点绕,还是拿传纸条举例子。
因为你们教室很大,你看不到你哥们,所以你也不知道你哥们到底有没有收到信息。即使你收到了复兴,创建了通讯,你也不确定复兴你的到底是你哥们还是你们女班长,还是隔壁班的谁人一米九体育生。
这大概导致以下隐患:
①无法确定请求/响应发送至目标的Web服务器/客户端是不是我期望的服务器/客户端,大概是伪装的服务器/客户端。
②无法确认通讯的对方是否具有访问权限,因为某些服务器上保存的重要信息,只能开放给有特定权限的客户端访问。
③无法判定请求来自何方,出自谁手。
④即使是无意义请求也会照单全收,海量无意义请求下的Dos攻击(Denial of service,拒绝服务攻击),会让服务器瘫痪。
易窜改
HTTP协议无法证实通讯的报文完备性,因此在请求和响应送出后,直到对方收到前这段时间,信息即使被窜改也无法知悉。假如有一个坏同砚在你和你哥们通讯的路上,他偷偷窜改你们俩的通讯内容,你们也不会知道,这种攻击叫做中间人攻击。(Man in the middle attack,MITM) HTTP+加密+认证+完备性保护=HTTPS