·明文
~无内建的机密性安全机制,完全以明文传输所有信息
~嗅探或代理阶段可查看全部明文信息
~https只能提高传输层安全,不能解决所有问题(使用https=安全是不严谨的,https也是可以被监听的)
·无状态
~每一次客户端和服务器端的通信都是独立的过程
~WEB应用需要跟踪客户端会话(多步通信)
~不使用cookie的应用,客户端每次请求都要重新验证身份(不现实)
~Session用于在用户身份验证后跟踪用户行为轨迹
提高用户体验,但增加了攻击向量
·Cycle一个单元
~请求/响应 【brup中,请求包是GET,(右击Do intercept->Response do this request),返回包是HTTP的一个状态】
·HTTP请求
~说明HTTP方法 【GET/POST】
~请求的URL 【GET /jxjg.htm HTTP/1.1】
~使用的HTTP版本 【一般是HTTP/1.1】
~Location:重定向用户到另一个页面,可识别身份认证后允许访问的页面
~Cookie:客户端发回给服务器证明用户状态的信息(头:值成对出现)
~Referer:发起请求之前用户位于哪个页面,服务器基于此头的安全限制很容易被修改绕过 【从什么地方过来的】
~User-Agent提供与浏览器或其他生成请求的客户软件有关的信息 【记录浏览器和计算机的版本】
~Host:被访问的完整的URL中的主机名称 【判断所测试的是否属于此范围】
·HTTP响应
~使用的HTTP版本 【HTTP/1.1 302 Found】
~请求结果的数字状态码
【1**:信息,服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理
3**:重定向,需要进一步的操作已完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误】
~Set-Cookie:服务器发给客户端的SessionID(被窃取的风险)【若存在,是可利用的一个点】
~Content-Lenght:响应body部分的字节长度
~Pragma:消息头指示浏览器不要将响应保存在缓存中
~Server:指明所使用的Web服务器软件 【最好不要显示,若显示出来是可利用的漏洞】
~Content-Type表示这个消息主体中包含一个什么类型的文档
·HTTP方法
~GET作用在于获取资源
~POST作用在于执行操作
~HEAD与GET方法相似,服务器不会在其响应中返回消息主体
~TRACE主要用于诊断
~OPTIONS服务器通常返回Allow消息头响应,列出所有有效方法 【搜索危险的HTTP请求方法】
~PUT向服务器上传指定资源 【DELETE是删除服务器指定资源,请求方式比较危险】
·HTTP消息头
~Accept设置接受的内容类型 【*/ *:代表都可以接受】
~Accept-Encoding设置接受的编码格式
~Accept-Language设置接受的语言
~Authorization设置HTTP身份验证的凭证
~Cache-Control设置请求响应链上所有的缓存机制必须遵守的指令 【规范缓存机制,一般是默认的】
~Connection设置当前连接和hop-by-hop协议(关于路由器的一个协议)请求字段列表的控制选项
·URL
统一资源定位符,是标识Web资源的唯一标识符,通过它可获取其标识的资源
2.HTTP与HTTPS的区别
·HTTP
·HTTPS:HTTP+SSL
·HTTPS作用
~CIA:机密性、完整性、可用性(信息传输中)
~解决的是信息传输过程中数据被篡改、窃取
~只解决了数据传输过程中的机密性和完整性
~在客户端和服务端中的任何一个节点都可以把自己做成中间人的模式进行监听
~客户端-----中间人(解密https查看之后)------服务端
~正常情况下,客户端向服务端发起访问请求,发起请求之后服务端将含有公钥的证书下发给客户端,客户端拿到公钥证书之后随机在客户端生成一个对称密钥。通过这个对称密钥来加密后续的数据流量。但是对称密钥不会在网络中直接传输对称密钥会用证书中的公钥把对称密钥加密发给服务器端,服务器端有自己证书公钥对应的私钥,只有服务器端解出来客户端发来的数据,解出来之后就拿到了加密数据的对称密钥,后续的数据传输还是使用对称加密密钥进行,因为每次会话的对称密钥都是客户端随机生成的,所以一次通讯完成之后就会失效。时效短,破解难,比较安全。
看起来很安全啊,但是
服务器------中间节点------服务端
黑客会在中间节点劫持时使自己的服务器上生成一张证书,伪造证书会按照服务器端的字段生成一个证书,伪造证书和真正的服务器端的证书公私钥是不一样的,因为公私钥是由非对称的加密算法来进行生成的,一个公钥加密的内容只有对应私钥可以解开,所以公钥可以拿出来给人,但是私钥要自己保存。因为加密算法的强度,通过公钥来推导私钥是不可能完成的。
伪造证书的作用:客户端访问服务器端时,其实是先访问了劫持者的服务器,劫持者拿到解密的信息后再去访问服务器,解开服务器返回的信息再给客户端
3.PING
·ping用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常,网络是否通畅等。Ping命令可以进行以下操作:
(1)通过将ICMP(Internet控制消息协议)回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接
(2)每个发送的数据包最多等待一秒
(3)打印已传输和接收的数据包数
需要注意的是,Ping成并不一定就代表TCP/IP配置正确,有可能还要执行大量的本地主机与远程主机的数据包交换,才能确信TCP/IP配置的正确性。如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,ping成功只保证当前主机与目的主机间存在一条联通的物理路径。【在cmd中确认学校时:ping nuc.edu.cn】
4.DNS
·dns是domain name service的缩写,他的作用简单地说,可以理解为:将域名翻译成ip地址。互联网,或者服务器,是看不懂域名的,它们只懂ip地址,dns其实就是一个翻译,将服务器看不懂得语言翻译成它们看得懂的语言,这样用户在浏览器中输入域名,服务器就可以通过dns知道用户请求的是哪个网站,然后才能将对应的网站内容返回给用户。
·dns具体的工作原理
你可以把dns看成你手机中的通讯录,通讯录中有人名,人名对应手机号码等联系方式,当你想打电话给某个人时,在通讯录中输入那个人的名称,就好像你在浏览器中输入域名url,然后通讯录检索到你输入的那个人名,然后返回那个人的电话号码,换成dns,就是dns将你输入的url对应成ip地址,然后将ip地址返回给服务器,从而帮助用户获取网页内容
cookie/session
·比如说,客户端要访问服务器端的资源,提交自己的用户名和密码进行身份认证,身份认证通过之后服务器端就会给客户端下发一个cookie信息,cookie交给客户端后,后续的每次访问请求都会携带cookie信息,服务器端之所以能够跟踪用户就是通过cookie实现的。
·session
~cookie里可以存放sessionid,真正的session在服务器端的,session定时失效。
状态码
服务端响应的状态码表示响应的结果类型(5大类50多个具体响应码)
·100服务器响应的信息,通常表示服务器还有后续处理,很少出现
·200请求被服务器成功接受并处理后返回的响应结果
·300重定向,通常在身份认证成功后重定向到一个安全页面(301/302)
·400表示客户端请求错误
~401需要身份验证
~403拒绝访问
~404目标未发现
·500服务器内部错误(503:服务不可用)
TLS/SSL
·SSL安全套接层
~http是明文的不安全的,为了解决这些问题,保证网络通信安全的加密协议
~1994年由Netscape开发成为统一标准
~1999年TSL取代SSL v3
·TLS当前最新版本1.3
·TLS/SSL、HTTPS通俗上表示同样含义
·也用于其他场景
~邮件传输(服务器间、客户端与服务器间)
~数据库服务器间
~SSL VPN
~远程桌面RDP通信过程中的加密和身份认证
·WEB通信中的SSL加密
~公钥证书(受信任的第三方证书颁发机构签名颁发)
~VerSign
~Thawte
~GlobalSign
~Symantec
·加密过程
握手、协商加密算法(默认选择服务器和客户端能支持的最高级别的算法)、获取公钥证书、验证公钥证书、交换会话密钥、加密信息传输