精心整理了一些网络安全面试题,觉得对你有用的话记得点个赞再走哦~(片尾有汇总资料哦!)
上期:网络面试题汇总(二)
20、GET 和 POST 的区别
get 是获取数据,post 是修改数据
get 把请求的数据放在 url 上, 以?分割 URL 和传输数据,参数之间以&相连,所以 get 不太
安全。而 post 把数据放在 HTTP 的包体内(requrest body)
get 提交的数据最大是 2k( 限制实际上取决于浏览器), post 理论上没有限制。
GET 产生一个 TCP 数据包,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返
回数据); POST 产生两个 TCP 数据包,浏览器先发送 header,服务器响应 100 continue,浏
览器再发送 data,服务器响应 200 ok(返回数据)。
GET 请求会被浏览器主动缓存,而 POST 不会,除非手动设置。
GET 是幂等的,而 POST 不是幂等的
21、Cookies 和 session 区别
Cookie 和 Session 都是客户端与服务器之间保持状态的解决方案
1,存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session 存储的数据
比较安全
2,存储的数据类型不同
两者都是 key-value 的结构,但针对 value 的类型是有差异的
cookie:value 只能是字符串类型,session:value 是 Object 类型
3,存储的数据大小限制不同
cookie:大小受浏览器的限制,很多是是 4K 的大小, session:理论上受当前内存的限制,
4,生命周期的控制
cookie 的生命周期当浏览器关闭的时候,就消亡了
(1)cookie 的生命周期是累计的,从创建时,就开始计时,20 分钟后,cookie 生命周期结束,
(2)session 的生命周期是间隔的,从创建时,开始计时如在 20 分钟,没有访问 session,那
么 session 生命周期被销毁
22、session 的工作原理?
session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完
之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问
服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session
这样就可以正常工作了。
23、一次完整的 HTTP 请求过程
域名解析 --> 发起 TCP 的 3 次握手 --> 建立 TCP 连接后发起 http 请求 --> 服务器响应 http
请求,浏览器得到 html 代码 --> 浏览器解析 html 代码,并请求 html 代码中的资源(如 js、
css、图片等) --> 浏览器对页面进行渲染呈现给用户。
24、HTTPS 和 HTTP 的区别
1.HTTP 协议传输的数据都是未加密的,也就是明文的,因此使用 HTTP 协议传输隐私信息非
常不安全, HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,
要比 http 协议安全。
2. https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
25、OSI 的七层模型都有哪些?
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层
网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选
择最适当的路径。
传输层:在源端与目的端之间提供可靠的透明数据传输
会话层:负责在网络中的两节点之间建立、维持和终止通信
表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
应用层:为用户的应用进程提供网络通信服务
26、http 长连接和短连接的区别
在 HTTP/1.0 中默认使用短连接。也就是说,客户端和服务器每进行一次 HTTP 操作,就建 立一次连接,任务结束就中断连接。而从 HTTP/1.1 起,默认使用长连接,用以保持连接特性。
27、什么是 TCP 粘包/拆包?发生原因?解决方案
一个完整的业务可能会被 TCP 拆分成多 个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是 TCP 的拆包 和粘包问题。
原因:
1. 应用程序写入数据的字节大小大于套接字发送缓冲区的大小.
2. 进行 MSS 大小的 TCP 分段。( MSS=TCP 报文段长度-TCP 首部长度)
3. 以太网的 payload 大于 MTU进行 IP 分片。( MTU 指:一种通信协议的某一层上面所能通过的最大数据包大小。)
解决方案:
1. 消息定长。
2. 在包尾部增加回车或者空格符等特殊字符进行分割
3. 将消息分 为消息头和消息尾。
4. 使用其它复杂的协议,如 RTMP 协议等。
28、常见的状态码有哪些?
200 OK //客户端请求成功 403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的 URL
500 Internal Server Error //服务器发生不可预期的错误 URI 和 URL 的区别 URI,统一资源标
识符,用来唯一的标识一个资源。URL 可以用来标识一个资源,而且还指明了如何定位这个
资源。
29、什么是 SSL ?https 是如何保证数据传输的安全(SSL 是怎么工作保证安全的)
SSL 代表安全套接字层。它是一种用于加密和验证应用程序(如浏览器)和 Web 服务器之
间发送的数据的协议。 身份验证 , 加密 Https 的加密机制是一种共享密钥加密和公开密
钥加密并用的混合加密机制。SSL/TLS 协议作用:认证用户和服务,加密数据,维护数据的
完整性的应用层协议加密和解密需要两个不同的密钥,故被称为非对称加密;加密和解密
都使用同一个密钥的 对称加密。 优点在于加密、解密效率通常比较高 HTTPS 是基于非对
称加密的, 公钥是公开的,
(1)客户端向服务器端发起 SSL 连接请求;
(2) 服务器把公钥发送给客户端,并且服务器端保存着唯一的私钥
(3)客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端
(4)服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密,
(5)进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,可以保证在数据收发过程中的安全,即是第三方获得数据包,也无法对其进行加密,解密 和篡改。
30、SSL 工作过程
A:客户端,B:服务器端
1.协商加密算法:A 向 B 发送 SSL 版本号和可选加密算法,B 选择自己支持的算法并告知 A
2.服务器鉴别:B 向 A 发送包含公钥的数字证书,A 使用 CA 公开发布的公钥对证书进行验
证
3.会话密钥计算:A 产生一个随机秘密数,用 B 的公钥进行加密后发送给 B,B 根据协商的
算法产生共享的对称会话密钥并发送给 A.
4.安全数据传输:双方用会话密钥加密和解密它们之间传送的数据并验证其完整性
学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题
同时每个成长路线对应的板块都有配套的视频提供: