本篇是《图解HTTP》阅读笔记(下),主要是http安全相关的内容。web
1.通讯使用明文(不加密),内容可能会被窃听
2.不验证通讯方的身份,所以有可能遭遇假装
3.没法证实报文的完整性,因此有可能已经遭到篡改
浏览器
加密的方式大概有两种
1.通讯的加密,也就是经过SSL或TLS的组合使用(注:TSL是以SSL为原型开发的协议,有时会统一称改协议为SSL),将整个通讯线路进行加密处理。这须要客户端与服务器创建起安全的通讯线路以后,才能开始通讯。
2.内容的加密,就是对HTTP协议传输的内容自己进行加密。为了作到内容的加密,前提是要求客户端和服务器端同时具有加密和解密的机制。
安全
在HTTP协议通讯时,因为不存在确认通讯方的步骤,任何人均可以发起请求。另外,服务器只要接收到请求,无论对方是谁都会返回一个响应。这就会带来通讯双方身份都有可能被假装的问题。
SSL协议提供了一种称为证书的手段,用于肯定通讯的双方。证书由值得信任的第三方机构颁发。经过证书,证实通讯方就是意料中的服务器;客户端持有证书,便可完成我的身份的确认。
服务器
一般,咱们使用两种方式确保报文的完整性:
a.使用MD5和SHA-1等散列值校验的方式;
b.用数字签名的方式确认文件
可是这些方式都没法百分比保证去人结果的正确,PGP和MD5自己被改写,用户是没法意识到的。HTTPS能够比较好的解决这个问题。网络
HTTPS的组成是:HTTP+加密+认证+完整性保护 (解决HTTP的三个主要问题)
也就是说,咱们把添加了加密以及认证机制的HTTP称为HTTPS(HTTP Secure)
一般,HTTP直接和TCP通讯,当使用SSL时,则变成先和SSL通讯,而后由SSL和TCP通讯。SSL是独立于HTTP的协议,是当今应用最为普遍的网络安全技术。加密
1.共享密钥加密
也就是加密和解密使用同一个密钥的方式。过程是这样的:发送端使用密钥对内容进行加密,而后将加密过的内容和密钥,一块儿发送给接收方。
这就存在一个明显的问题了,若是通讯被监听,密钥就可能会落入攻击者之手,加密就失去了意义。
2.公开密钥加密
公开密钥加密使用一对非对称的密钥:私有密钥,公开密钥。
公开密钥用于对内容加密,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,使用私有密钥进行解密。这种方式不须要发送用于解密的私有密钥,能够避免密钥的泄露。设计
既然公开密钥加密方式优于共享密钥加密方式,那HTTPS使用的是哪一种呢?
HTTPS使用的是二者并用的混合加密机制。由于公开密钥加密会消耗更多的CPU和内存,消耗更多的资源,处理速度要慢。合理的方式是,在交换密钥环节使用公开密钥加密方式,以后的创建通讯交换报文节点,则采用共享密钥加密的方式。
orm
咱们已经了解了加密的方式和原理,那么证书是怎么确认通讯双发身份的呢。
首先服务器运营人员向数字证书认证机构申请公开密钥,数字认证机构确认申请者身份后,会对申请的公开密钥作数字签名,而后分配给申请者这个已经签名的公开密钥,最后将这个公开密钥放入到共钥证书后绑定在一块儿。
通讯的时候,服务器将认证机构颁发的共钥证书发送给客户端,客户端使用数字机构认证的公开密钥对那张证书上的数字签名进行验证,验证经过后,能够确认两件事情:a.服务器的公开密钥是真实有效的数字机构认证的;b.服务器的公开密钥是值得信赖的。
固然,多数浏览器会事先在浏览器内部植入经常使用认证机构的公开密钥。
网络安全
某些web页面只想让特定的人浏览,就须要对用户的身份进行认证。核对的信息一般有:
1.密码:只有本人才知道的字符串信息
2.动态令牌:仅限于本人持有的设备内显示的一次性密码
3.数字认证:仅限本人持有的信息
4.生物认证:指纹、虹膜等
5.IC卡等
HTTP使用的认证方式有: 1.BASIC认证
2.DIGEST认证
3.SSL客户端认证
4.FormBase认证
图片
超文本标记语言。超文本是一种文档系统,可将文档中任意位置的信息与其它信息(文本或图片)创建关联,即超连接文本。
CSS的理念就是让文档的结构和设计分离,达到解耦的目的。
指使用客户端脚本语言将静态的HTML内容变成动态的技术的总称。
DOM是用于操做HTML文档和XML文档的API。
1.跨站脚本攻击(Cross-Site Scripting,XSS)
2.SQL注入攻击
3.OS命令注入攻击
4.HTTP首部注入攻击
5.邮件首部注入攻击
6.目录遍历攻击
7.远程文件包含漏洞
1.强制浏览
2.不正确的错误信息处理
3.开放重定向
1.会话劫持
2.会话固定攻击
3.跨站点请求伪造(Cross-Site Request Forgeries,CSRF)
1.密码破解 2.点击劫持 3.DoS攻击 4.后门程序