GET/POST区别
参数:
GET传递的参数只能带URL后面,文本格式QueryString,各浏览器一般有长度限制,一般认为是2083,如果有中文字符更短。提交到服务器端的数据量小。
POST可以传递application/x-www-form-urlencoded的类似QueryString、multipart/form-data的二进制报文格式(支持文件信息嵌入报文传输)、纯文本或二进制的body参数。提交到服务器端的数据量大。
用途:
GET用于从服务器端获取数据,包括静态资源(HTML|JS|CSS|Image等等)、动态数据展示(列表数据、详情数据等等)。
POST用于向服务器提交数据,比如增删改数据,提交一个表单新建一个用户、或修改一个用户等。
缓存:
GET时默认可以复用前面的请求数据作为缓存结果返回,此时以完整的URL作为缓存数据的KEY。所以有时候为了强制每次请求都是新数据,我们可以在URL后面加上一个随机参数Math.random或时间戳new Date().getTime()、或版本号,比如abc.com?a=1&rnd=0.123987之类的。这也是目前一些静态资源后面加一个很长的版本号的原因,jquery-min.js?v=13877770表示一个版本,当页面引用jquery-min.js?v=13877771时浏览器必然会重新去服务器请求这个资源。jQuery.ajax方法,如果cache=false,则会在GET请求参数中附加”_={timestamp}”来禁用缓存。
POST一般则不会被这些缓存因素影响。
安全性:
默认对于nginx的access log,会自动记录get或post的完整URL,包括其中带的参数。
对于POST来说,请求的报文却不会被记录,这些对于敏感数据来说,POST更安全一些。
自动化性能测试:
基于上面提到的nginx日志,可以使用grep GET+日期,awk格式化,然后sort -u去重,从而提取到某天的所有GET请求URL,使用程序模拟登陆,然后请求所有URL即可获取简单的性能测试数据,每个请求是否正确,响应时间多少等等。
但是对于POST请求,因为不知道报文,无法这样简单处理。可以通过nginx-lua获取报文输出到log,这样格式化会麻烦很多,但不失为一个办法。
UDP/TCP区别
连接方面百区别
TCP面向连接(如打电话要先拨号建立连接)。
UDP是无连接的,即发送数据之前不需要建立连接。
安全方面的区别
TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到度达。
UDP尽最大努力交付,即不保证可靠交付。
传输效率的区别
TCP传输效率相对较低。
UDP传输效率高,适用于对高版速传输和实时性有较高的通信或广播通权信。
连接对象数量的区别
TCP连接只能是点到点、一对一的。
UDP支持一对一,一对多,多对一和多对多的交互通信。
3.TCP 三次握手
**第一次握手:**建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers)
**第二次握手:**服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
**第三次握手:**客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
完成三次握手,客户端与服务器开始传送数据
什么是 TIME-WAIT?
TIME_WAIT的意思是结束了这次连接。
简单来说:time_wait状态是四次挥手中server向client发送FIN终止连接后进入的状态。
4.HTTP 1.0、1.1、2.0
最早在1996年在网页中使用,内容简单,所以浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。
HTTP1.1:
到1999年广泛在各大浏览器网络请求中使用,HTTP/1.0中默认使用Connection: close。在HTTP/1.1中已经默认使用Connection: keep-alive(长连接),避免了连接建立和释放的开销,但服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。通过Content-Length字段来判断当前请求的数据是否已经全部接收。不允许同时存在两个并行的响应。
HTTP2.0:
HTTP/2引入二进制数据帧和流的概念,其中帧对数据进行顺序标识,(流(stream):已建立连接上的双向字节流;消息:与逻辑消息对应的完整的一系列数据帧;帧:HTTP2.0通信的最小单位,每个帧包含帧头部,至少也会标识出当前帧所属的流(stream id))这样浏览器收到数据之后,就可以按照序列对数据进行合并,而不会出现合并后数据错乱的情况。同样是因为有了序列,服务器就可以并行的传输数据,这就是流所做的事情。这些数据帧都在一个tcp连接(可以承载任意数量的双向数据流)上并行发送。
http1.0和http1.1的主要区别如下:
1、缓存处理:1.1添加更多的缓存控制策略(如:Entity tag,If-Match)
2、网络连接的优化:1.1支持断点续传
3、错误状态码的增多:1.1新增了24个错误状态响应码,丰富的错误码更加明确各个状态
4、Host头处理:支持Host头域,不在以IP为请求方标志
5、长连接:减少了建立和关闭连接的消耗和延迟。
http1.1和http2.0的主要区别:
1、新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式
2、多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成正常的请求)
3、header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的hearder大小
4、服务端推送:同google的SPDUY(1.0的一种升级)一样
HTTPS流程,SSL,非对称加密,对称加密,RSA具体实现
一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。
<1>客户端向服务器发起HTTPS请求,连接到服务器的443端口
<2>服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。
<3>服务器将自己的公钥发送给客户端。
<4>客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现发现证书有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性,关于客户端如何验证数字证书的合法性,下文会进行说明。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。
<5>客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
<6>服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
<7>然后服务器将加密后的密文发送给客户端。
<8>客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。
SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
服务器端的公钥和私钥,用来进行非对称加密
客户端生成的随机密钥,用来进行对称加密
RSA的加密过程可以使用一个通式来表达
密文=明文EmodN
公钥=(E,N)
RSA的解密同样可以使用一个通式来表达
明文=密文DmodN
私钥=(D,N)
OSI七层模型是什么,都有哪些协议,TCP/IP四层是什么
第一层物理层 第二层数据链路层 第三层网络层 第四层传输层 第五层会话层
第六层表示层 第七层应用层
1、物理层协议有:baiEIA/TIA-232,du EIA/TIA-499,V.35, V.24,RJ45, Ethernet, 802.3
2、数据链路层协议有:zhiFrame Relay,HDLC,PPP, IEEE
802.3/802.2
3、网络层协议有:IP,IPX,AppleTalk DDP
4、传输层协议有:TCP,UDP,SPX
5、会话层协议有:RPC,SQL,NFS,NetBIOS,names,AppleTalk
6、表示层协议有:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption
7、应用层协议有:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP
第一层:网络接口层 第二层:网间层 第三层:传输层 第四层:应用层
DNS,ARP原理
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。
DNS domain name system 主要作用就是将主机域名转换为ip地址
ARP协议是“Address Resolution Protocol”(地bai址解析协议)的缩写。在局域网du中,网络中实际传输的zhi是“帧”,帧里面是有dao目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
地址栏输入URL会发生什么
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html文本并显示内容
WebSocket是什么
WebSocket是一种在单个TCP连接上进行全双工通信的协议,WebSocket通信协议于2011年被IETF定为标准【RFC 6455】,并由RFC7936补充规范,【WebSocket API】也被W3C定为标准
DOS攻击如何解决
采用高性能的网络设备 尽量避免NAT的使用
充足的网络带宽保证 升级主机服务器硬件
DNS欺骗攻击怎么解决
进行IP地址和MAC地址的绑定
使用Digital Password进行辨别
优化DNS SERVER的相关项目设置
直接使用IP地址访问
对DNS数据包进行监测
ARP欺骗解决
在PC上绑定安全网关的IP和MAC地址: 首先,获得安全网关的内网的MAC地址,
编写一个批处理文件rarp.bat 在安全网关上绑定用户主机的IP和MAC地址
SQL注入
还是避免数据变成代码被执行,时刻分清代码和数据的界限。而具体到SQL注入来说,被执行的恶意代码是通过数据库的SQL解释引擎编译得到的,所以只要避免用户输入的数据被数据库系统编译就可以了
Iframe安全问题
-
关闭网站,显示日常维护的消息。立即关闭网站是一个良好的行为,防止恶意软件在受害者计算机上传播。
-
创建备份站点(核心文件,数据库和其他所有的文件夹)。即使它是一个受感染的站点,备份也是必要的。如果在清理过程做了某些错误操作可以恢复到之前的同等情况。
-
确保你的计算机没有感染到恶意软件和病毒,如果你不确定你的计算机是否受到感染,做一次安全清理。这是一个必要的步骤,因为恶意软件可能会有记录FTP凭据的能力。
4.修改所有与网站相关的密码(FTP密码,SSH密码,Admin密码,Cpanl或其他主机面板密码,数据库密码等等)。
-
如果你的网站需要一个干净的备份,使用反病毒软件扫描一次。之后,上传到你的Web服务器,并检查各项功能。如果仍然有问题,那么需要手动检查文件,以确定注入的代码。
-
如果没有干净的备份,手动找到注入的代码并删除。在上文中,以分析了两种iframe注入(简单的iframe注入和隐藏的iframe注入),可能的情况下,按照之前的程序,分析可能存在的注入(建议在每一次变化后做一个备份)。
-
确保站点不再存在注入代码