HTTP协议相关
1.http是超文本传输协议。支持B/S模式,优点是简单快速,B端发出请求只需要传送方法和路径。正在传输的类型有content-Type标示。
2.https和http的区别:
http存在以下安全问题:使用明文通信,不验证通信双方的真实性(可以被伪装),无法验证报文的完整性可能被篡改。
HTTPs是先让http和SSL通信,再有SSL和TCP 通信。HTTPs采用隧道技术进行加密。
通过使用SSL,使得HTTPs具有了加密,CA(认证)和完整性保护(防篡改)
3.GET和POST方法的区别:
GET请求将参数包含在URL中,POST将请求参数包含在requestbody中。
GET请求时回退无害的,POST会再次提交请求。
GET只能进行url编码,POST支持多种编码方式
GET请求参数还完整保存在浏览器历史中,POST的参数不会保留。
GET请求在URL中的传送的长度是有限追的,而POST没有限制。
GET比POST更不安全,因为参数会暴露在URL上,所以不能用来保存敏感信息。
GET的URL地址可以存书签,POST的不会。
GET只会发送一个TCP包,POST会发送两个TCP包。GET的TCP包包含头和data而POST发送的2个TCP包是先发送一个header再发送一个data包。
4:keep-alive、长连接、流水线
HTTP/1.0:每个连接只能传送一个请求和响应,请求就会关闭,没有HOST字段。
HTTP/1.1:同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,必须有HOST字段。
长连接:长连接只需要建立一次就可以进行多次http通信。从http/1.1开始默认长连接。关闭长连接需要Connect:close
http/1.1之前默认短连接 使用长连接需要使用Connection:keep-alive
默认的情况下,http请求是按照顺序发出的,下一个连接只有在当前连接应答后才能发送,使用长连接可以在一次长连接上连续发送http请求。
5:3次握手和4次挥手的区别
三次握手:
三次握手.jpg
客户机先发起请求,服务器响应请求,客户机确认请求并将要请求的资源一起发给服务器(没收到客户机的请求时,服务器会一直保证监听不断开,这样会浪费服务机的资源,有的网络攻击就是通过这样来消耗服务器的资源。)
四次挥手:
四次挥手
首先主动关闭方(客户机)向服务器发送一个FIN表示我没有请求要发给你了。服务器收到请求后回复一个ACK表示接收到了这条消息。这为前2次挥手。此时服务器还会处理已经接受到的请求,将它发送给客户机。
当服务器发送完所有的数据后,会给客户机发送一个FIN 表示服务器所要发送的资源全部发完了,客户机收到后会回发一个ACK表示已经收到。这是后2次回收。4次挥手的原因是因为TCP/IP协议是全双工的,因此要关闭发送的通道和接受的通道。
6:cookie和session的区别
http协议是无状态协议,这样使得http协议尽可能的简单,这样就可以处理大量的事物。HTTP/1.1引入cookie来保存状态信息。cookie协议是服务器发送给 浏览器并保存在本地的一小块数据,他会在浏览器下一次访问时携带,发往浏览器。它用来告知服务器端两个请求是否来自同一个浏览器,并保持用户的状态。(cookie存在本地会不安全。)
用户信息通过Cookie存储在用户浏览器中,也可以利用Session存储在服务端,更加安全。Session 可以存储在服务器上的文件、数据库或者内存中,现在最常见的是将 Session 存储在内存型数据库中,比如 Redis。使用Session维护用户登陆的过程:
用户进行登陆时,用户提交包含用户名和密码的表单,放入HTTP请求报文中;
服务器验证该用户名和密码;如果正确则把用户信息存储到Redis中,它在Redis中的ID为Session ID;服务器返回的响应报文中的Set-Cookie首部字段包含了这个Session ID,客户端收到响应报文之后将该Cookie值存入到浏览器中;客户端之后对同一个服务器进行请求时会包含该Cookie值,服务器收到之后提取出Session ID,从Redis中取出用户信息,继续之后的业务操作。(session 要设置过期时间 , 不然会占很大空间)
7:http的常见字段:
cache-control : 控制缓存 (缓存机制有利于缓解服务器的压力)
8:状态字:
1XX 提示信息类 - 表示请求已被成功接收,继续处理
2XX 响应成功类 - 表示请求已被成功接收,理解,接受 (200 访问成功)
3XX 重定向类 - 要完成请求必须进行更进一步的处理(304)
4XX 客户端错误类 - 请求有语法错误或请求无法实现(404 找不到资源)
5XX 服务器端错误类 - 服务器未能实现合法的请求(500 服务器内部错误)
9WEB攻击技术:
主要分为:
1:跨站脚本攻击(XSS):将代码注入用户浏览的网页上,这种代码包括HTML和JS代码
危害:窃取用户的cookie、显示伪造的文章和图片、伪造虚假的表单输入骗取用户信息。
防范手段:设置httpOnly的cookie来禁止JS获取cookie;过滤特殊字符;
2:跨站请求伪造(CSRF):
跨站请求伪造(CSRF):攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。
XSS利用的是用户对指定网站的信任,CSRF利用的是网站对用户浏览器的信任。
攻击者并不能通过CSPF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义去操作。
- 防范手段
(一)检查Referer首部字段
Referer 首部字段位于 HTTP 请求报文中,用于标识请求来源的地址。检查这个首部字段并要求请求来源的地址在同一个域名下,可以极大的防止 CSRF 攻击。
(二)添加校验Token
在访问敏感数据请求时,要求用户浏览器提供不保存在 Cookie 中,并且攻击者无法伪造的数据作为校验。
(三)输入验证码
CSRF 攻击是在用户无意识的情况下发生的,所以要求用户输入验证码可以让用户知道自己正在做的操作。也可以要求用户输入验证码来进行校验。
3:拒绝服务攻击:
洪水攻击。
4:SQL注入攻击:
服务器上运行非法的SQL语句,主要通过拼接来完成。
防范手段:
1.使用参数查询:
2.单引号转换:
部分文章信息来源于以下博客。
作者:WustCxh
来源:CSDN
原文:https://blog.csdn.net/peixie9441/article/details/80864521