web及网络基础
通常使用的网络是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。
那什么叫TCP/IP协议族呢?
TCP/IP是互联网相关的各类协议族的总称。
TCP/IP的分层管理
- 应用层: 应用层决定了用户提供服务时的通信的活动。HTTP协议也处于该层。
- 传输层: 顾明思意,提供两台计算机之间的数据传输。
- 网络层(又名网络互连层): 多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
- 链路层 (又名数据链路层,网络接口层): 处理网络连接的硬件部分。
简单的Http协议
告知服务器意图的HTTP方法
- GET 获取资源
- POST 传输实体主体
- PUT 传输文件
- DELETE 删除文件
- OPTIONS 询问支持的方法
- TRACE 追踪路径
- CONNECT 要求用隧道协议连接代理
HTTP报文内HTTP信息
通过设置首部字段,来达到获取部分内容范围请求(请求资源中断后,不需要重新开始请求),将传输内容编码的目的,来提高加载效率。
有的时候不同的场景需要我们获取不同的内容,就比如页面的中英文切换的功能,在HTTP请求中,我们通过设置 accept 类的请求头字段实现,也就是内容协商的方式,返回最合适的内容。协商方式分为,服务器驱动协商,客户端驱动协商,透明协商。
返回的HTTP状态码
状态码的类别,大致可分为5种
-
1XX 请求正在处理
-
2xx 请求正常处理完毕 | 2xx| 请求被正常处理 | | --- | --- | | 200| OK,表示从客户端的请求处理成功 | | 204| 表示请求成功,但响应报文不含实体的主体部分| |206| 进行范围请求成功|
-
3xx 需要进行附加操作以完成请求
3xx | 需要进行附加操作以完成请求 |
---|---|
301 | 永久性重定向 |
302 | 临时性重定向 |
303 | see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源 |
304 | 该状态码表示客户端发送附带条件的请求 2 时,服务器端允许请求访 问资源,但未满足条件的情况 |
307 | 临时重定向,该状态码与302有着相同的含义 |
- 4xx 服务端无法处理请求
4xx | 客户端错误 |
---|---|
400 | 表示请求报文中存在语法错误 |
401 | 表示发送的请求需要有通过 HTTP 认证的认证信息 |
403 | 该状态码表明对请求资源的访问被服务器拒绝了 |
404 | 该状态码表明服务器上无法找到请求的资源 |
- 5xx 服务端请求出错 | 5xx | 服务器错误 | | --- | --- | | 500 | 该状态码表明服务器端在执行请求时发生了错误| | 503| 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法 处理请求 |
与HTTP协作的web服务器
一台服务器可以搭建多个独立域名的web网站,也可以作为通信路径上的中转服务器提升传输效率。
HTTP首部
在请求中,HTTP 报文由请求方法,URI,HTTP版本,HTTP 首部字段等部分构成。在响应中,HTTP 的报文有 HTTP 版本,状态码,HTTP首部字段3部分构成。首部信息尤为重要,我们可以通过首部字段的设置来传递请求信息,类比于缓存控制,报文创建时间,是否压缩编码,是否支持跨域等
web 安全的HTTPS
HTTP的缺点
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
什么叫HTTPS
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
-
对称加密:唯一密钥
key1
可用来加密也可用来解密。这样的加密需要双方都拥有密钥key1
,如果第一次传输密钥被第三方截获就玩完。 -
非对称加密:公钥
key3
和私钥key2
都可用于对应的加密和解密,即可用公钥加密私钥解密,也可用私钥加密公钥解密。服务端会生成一对密钥,一个私钥保存在服务端,仅自己知道,另一个是公钥,公钥可以自由发布供任何人使用。客户端的明文通过公钥加密后的密文需要用私钥解密。非对称密钥在加密和解密的过程的使用的密钥是不同的密钥,加密和解密是不对称的,所以称之为非对称加密。与对称密钥加密相比,非对称加密无需在客户端和服务端之间共享密钥,只要私钥不发给任何用户,即使公钥在网上被截获,也无法被解密,仅有被窃取的公钥是没有任何用处的。 -
混合加密:服务端先用非对称加密的私钥
key2
加密对称加密的密钥key1
并传给客户端,客户端用非对称加密的公钥key3
解密出对称加密的密钥key1
,双方都有了密钥key1
,开始利用key1
加密通信。缺点:中间人可以自己生成非对称加密公钥替换掉服务端公钥发送给客户端,而此时客户端并无法验证公钥的可信性。 -
SSL:首先需要从证书认证机构申请证书(证书中含有证书签名和服务端公钥
key3
)。在客户端发起HTTP请求时,服务端将证书发送给客户端。客户端认证证书的真伪,然后解密出服务端公钥key3
,用公钥加密自己生成的对称加密密钥key1
并传给服务端,最后利用key1
加密进行通话。至于安全性,由于私钥是机构的,可以避免第三方伪造证书。并且就算得到了服务端公钥,也无法解密出公钥key3
加密过的对称加密密钥key1
。
确认访问用户的身份的认证
HTTP使用的认证方式
- BASIC 认证(基本认证)
- DIGEST 认证(摘要认证)
- SSL 客户端认证
- FormBase 认证(基于表单认证)
web的攻击技术
- 跨站脚本攻击
XSS 就是攻击者在 Web 页面中插入恶意脚本,当用户浏览页面时,促使脚本执行,从而达到攻击目的。XSS 的特点就是想尽一切办法在目标网站上执行第三方脚本。
- SQL注入攻击
所谓 SQL 注入,就是通过客户端的输入把 SQL 命令注入到一个应用的数据库中,从而得以执行恶意 SQL 语句。
- OS命令注入攻击
OS 命令注入攻击是指通过 Web 应用,执行 非法的操作系统命令达到攻击的目的。只要在能调用 Shell 函数的地 方就有存在被攻击的风险。
- HTTP首部注入攻击
HTTP 首部注入攻击是指攻击者通过在响应 首部字段内插入换行,添加任意响应首部或主体的一种攻击。
- 邮件首部注入攻击
邮件首部注入是指 Web 应用中的邮件发送功 能,攻击者通过向邮件首部 To 或 Subject 内任意添加非法内容发起的 攻击。利用存在安全漏洞的 Web 网站,可对任意邮件地址发送广告 邮件或病毒邮件。
- 目录遍历攻击
目录遍历攻击是指对本无意公开的文件目录, 通过非法截断其目录路径后,达成访问目的的一种攻击。这种攻击有 时也称为路径遍历攻击。
- 远程文件包含漏洞
远程文件包含漏洞是指当部分脚本内容需要 从其他文件读入时,攻击者利用指定外部服务器的 URL充当依赖文 件,让脚本读取之后,就可运行任意脚本的一种攻击。
- DOS攻击
DoS 攻击就是通过大量恶意流量占用带宽和计算资源以达到瘫痪对方网络的目的。
《图解HTTP》PDF分享
www.aliyundrive.com/s/yecdCXuti…
写在最后
感谢你有耐心读完这篇文章,如果文章中有任何错误,或者你有任何疑问,请直接在文章评论区留言。