几率较大的网络安全面试

一、防范常见的 Web 攻击
1、SQL 注入攻击
攻击者在 HTTP 请求中注入恶意的 SQL 代码,服务器使用参数构建数据库 SQL 命令时,恶意 SQL 被一起构造,并在数据库中执行。
用户登录,输入用户名 lianggzone,密码 ‘ or ‘1’=’1 ,如果此时使用参数构造的方 式,就会出现
select * from user where name = ‘lianggzone’ and password = ‘’ or ‘1’=‘1’ 不管用户名和密码是什么内容,使查询出来的用户列表不为空。如何防范 SQL 注入攻击使用 预编译的 PrepareStatement 是必须的,但是一般我们会从两个方面同时入手。
Web 端
1)有效性检验。
2)限制字符串输入的长度。
服务端
1)不用拼接 SQL 字符串。
2)使用预编译的 PrepareStatement。

3)有效性检验。(为什么服务端还要做有效性检验?第一准则,外部都是不可信的,防止攻击者绕过 Web 端请求)
4)过滤 SQL 需要的参数中的特殊字符。比如单引号、双引号。

2、XSS攻击

XSS 攻击 跨站点脚本攻击,指攻击者通过篡改网页,嵌入恶意脚本程序,在用户浏览网页时,控制用户浏览器进行恶意操作的一种攻击方式。

如何防范 XSS 攻击

1)前端,服务端,同时需要字符串输入的长度限制。
2)前端,服务端,同时需要对 HTML 转义处理。将其中的”<”,”>”等特殊字符进行转义 编码。
防 XSS 的核心是必须对输入的数据做过滤处理。

3、CSRF攻击

CSRF 攻击 跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。可以这么理 解 CSRF 攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF 能做的 事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。如何防范 CSRF 攻击
安全框架,例如 Spring Security。
token 机制。在 HTTP 请求中进行 token 验证,如果请求中没有 token 或者 token 内容不正确, 则认为 CSRF 攻击而拒绝该请求。
验证码。通常情况下,验证码能够很好的遏制 CSRF 攻击,但是很多情况下,出于用户体验 考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。
referer 识别。在 HTTP Header 中有一个字段 Referer,它记录了 HTTP 请求的来源地址。如果 Referer 是其他网站,就有可能是 CSRF 攻击,则拒绝该请求。但是,服务器并非都能取到 Referer。很多用户出于隐私保护的考虑,限制了 Referer 的发送。在某些情况下,浏览器也 不会发送 Referer,例如 HTTPS 跳转到 HTTP。
1)验证请求来源地址;
2)关键操作添加验证码;
3)在请求地址添加 token 并验证。

4、文件上传攻击

文件上传漏洞,指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务 端命令的能力。
许多第三方框架、服务,都曾经被爆出文件上传漏洞,比如很早之前的 Struts2,以及富文 本编辑器等等,可被攻击者上传恶意代码,有可能服务端就被人黑了。

如何防范文件上传漏洞
文件上传的目录设置为不可执行。

1)判断文件类型。在判断文件类型的时候,可以结合使用 MIME Type,后缀检查等方式。 因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,因为攻击者可以将可执行 文件的后缀名称改为图片或其他后缀类型,诱导用户执行。

2)对上传的文件类型进行白名单校验,只允许上传可靠类型。

3)上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加 攻击成本,同时向 shell.php.rar.ara 这种文件,因为重命名而无法成功实施攻击。

4)限制上传文件的大小。
5)单独设置文件服务器的域名。

二、DDos 攻击

DDoS攻击,即分布式拒绝服务攻击(Distributed Denial of Service Attack),是一种利用分布式网络来发起大量的请求,占用目标服务器或网络资源的攻击行为。

其目的是通过大量合法的请求占用大量网络资源,以达到瘫痪目标网络的目的,从而使其无法正常提供服务。DDoS攻击通常利用多个计算机或设备的协同攻击来进行,这些计算机或设备被称为"僵尸机器",由攻击者通过Botnet(僵尸网络)等软件感染并控制。

DDoS攻击的原理:是将多台计算机联合起来作为攻击平台,通过远程连接,利用恶意程序对一个或多个目标发起攻击,消耗目标服务器的性能或网络带宽,从而造成服务器无法正常地提供服务。攻击者通常会使用一个非法账号将DDoS主控程序安装在一台计算机上,并在网络上的多台计算机上安装代理程序,然后在所设定的时间内,主控程序与大量代理程序进行通讯,代理程序收到指令时对目标发动攻击。没有彻底根治的办法,除非不使用 TCP
DDos 预防:

1)限制同时打开 SYN 半链接的数目

2)缩短 SYN 半链接的 Time out 时间

3)关闭不必要的服务

三、其他常见的网络面试题

1、arp 协议的工作原理
ARP地址解析协议,是实现IP地址和Mac地址的映射,查询IP地址对应的Mac地址

原理:

(1)每台主机都会在自己的ARP缓冲区建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包发送到目的主机时,会先检查自己的ARP列表中是否存在该IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址,硬件地址,以及目的主机的IP地址。

(2)网络中所有主机收到这个ARP请求之后,会检查数据包中的目的IP是否和自己的IP地址一致,如果不一致就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP列表中已经存在该IP的信息,则将其覆盖,然后将自己的 MAC 地址写入 ARP 响应数据包中发送给源主机,告诉源主机自己是它想要找的 MAC 地址。给源主机发送一个ARP响应数据包

(3)源主机收到这个ARP响应数据包之后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

2、什么是 RARP?工作原理
概括: 反向地址转换协议,网络层协议,RARP 与 ARP 工作方式相反。 RARP 使只知道自己硬件地址(Mac地址)的主机能够知道其 IP 地址。RARP 发出要反向解释的物理地址并希望返回其 IP 地址, 应答包括能够提供所需信息的 RARP 服务器发出的 IP 地址。
原理:
(1)网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的 MAC 地址。

主机从网卡上读取 MAC 地址,然后在网络上发送一个 RARP 请求的广播数据包,请求 RARP 服务器回复该主机的 IP 地址。

(2)RARP 服务器收到了 RARP 请求数据包,为其分配 IP 地址,并将 RARP 回应发送给主机。

(3)PC1 收到 RARP 回应后,就使用得到的 IP 地址进行通讯。

3、dns 是什么?dns 的工作原理

域名解析协议,将主机域名转换为 ip 地址,属于应用层协议,使用 UDP 传输。(DNS 应用层协议,以前有个考官问过)

原理:

当在浏览器中输入一个域名,计算机会向配置的DNS服务器发送一个域名解析请求。DNS服务器首先会查看它的缓存,如果之前已经解析过该域名,则直接返回缓存中的IP地址。否则,它会继续向上级DNS服务器发出查询请求。查询会逐级向上追溯,直到达到顶级域名服务器(例如.com顶级域名服务器)。顶级域名服务器将提供下一级域名服务器的信息,该域名服务器负责该域名的解析。查询会继续向下级域名服务器传递,直到到达负责该域名的权威域名服务器。权威域名服务器将返回该域名对应的IP地址,然后逐级返回给发起查询的DNS服务器,最终返回给您的计算机。计算机收到IP地址后,便可以与该域名关联的服务器建立连接,进行相应的网络通信。
 

4、rip 协议是什么?rip 的工作原理
RIP 动态路由选择协议(网络层协议)
RIP 是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度 量来衡量到达目的网络的路由距离。RIP 通过 UDP 报文进行路由信息的交换,使用的端口号 为 520。

工作原理:
RIP 路由协议用“更新(UNPDATES)”和“请求(REQUESTS)”这两种分组来传输信息的。 每个具有 RIP 协议功能的路由器每隔 30 秒用 UDP520 端口给与之直接相连的机器广播更新 信息。并且在( 用“路程段数”(即“跳数”)作为网络距离的尺度。每个路由器在)给相 邻路由器发出路由信息时,都会给每个路径加上内部距离。
路由器的收敛机制:
任何距离向量路由选择协议(如 RIP)都有一个问题,路由器不知道网络的全局情况,路由 器必须依靠相邻路由器来获取网络的可达信息。由于路由选择更新信息在网络上传播慢,距 离向量路由选择算法有一个慢收敛问题,这个问题将导致不一致性产生。
RIP 较少路由收敛机制带来的问题:
1)记数到无穷大机制: RIP 协议允许最大跳数为 15。大于 15 的目的地被认为是不可达。 当 路径的跳数超过 15,这条路径才从路由表中删除。

2) 水平分割法: 路由器不向路径到来的方向回传此路径。当打开路由器接口后,路由器 记录路径是从哪个接口来的,并且不向此接口回传此路径。
3) 破坏逆转的水平分割法: 忽略在更新过程中从一个路由器获取的路径又传回该路由器

4)保持定时器法: 防止路由器在路径从路由表中删除后一定的时间内(通常为 180 秒)接 受新的路由信息。 保证每个路由器都收到了路径不可达信息

5) 触发更新法: 当某个路径的跳数改变了,路由器立即发出更新信息,不管路由器是否 到达常规信息更新时间都发出更新信息。

RIP 的缺点
1、由于 15 跳为最大值,RIP 只能应用于小规模网络;

2、收敛速度慢

3、根据跳数选择的路由,不一定是最优路由。

5、OSPF 协议?OSPF 的工作原理
OSPF(Open Shortest Pass First,开放最短路径优先协议),是一个最常用的内部网管协议,是 一个链路状态协议。(网络层协议,)
原理:
OSPF 组播的方式在所有开启 OSPF 的接口发送 Hello 包,用来确定是否有 OSPF 邻居,若发 现了,则建立 OSPF 邻居关系,形成邻居表,之后互相发送 LSA(链路状态通告)相互通告 路由,形成 LSDB(链路状态数据库)。再通过 SPF 算法,计算最佳路径(cost 最小)后放入 路由表。

6、TCP 与 UDP 区别总结?
1.TCP 面向连接(如打电话要先拨号建立连接)提供可靠的服务;UDP 是无连接的,即发送数据之前不需要建立连接;UDP 尽最大努力交付,即不保证可靠交付。(由于 UDP 无需建立连接,因此 UDP 不会引入建立连接的时延,TCP 需要在端系统中维护连接状态,比如接受和 发送缓存,拥塞控制,序号与确认号的参数等,故 TCP 会比 UDP 慢)
2.UDP 具有较好的实时性,工作效率比 TCP 高,适用于对高速传输和实时性有较高的通信或 广播通信。
3. 每一条 TCP 连接只能是一对一的;UDP 支持一对一,一对多,多对一和多对多的交互通信

4 UDP 分组首部开销小,TCP 首部开销 20 字节;UDP 的首部开销小,只有 8 个字节。
5. TCP 面向字节流,实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(一 次交付一个完整的报文,报文不可分割,报文是 UDP 数据报处理的最小单位)。
6.UDP 适合一次性传输较小数据的网络应用,如 DNS,SNMP 等

7、什么是三次握手四次挥手?

三次握手和四次挥手是TCP协议中用来建立和终止TCP连接的过程。

三次握手是建立一个TCP连接的过程,需要三个步骤:客户端发送连接请求报文段,服务器收到请求并发送确认报文段,客户端收到确认并发送确认报文段。

四次挥手是终止一个TCP连接的过程,需要四个步骤:客户端发送终止请求报文段,服务器收到请求并发送确认报文段,客户端收到确认并发送确认报文段,服务器收到确认并终止连接。

第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等 待服务器确认;
第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;

第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包 发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据

客户端先发送 FIN,进入 FIN_WAIT1 状态,用来关闭 Client 到 Server 的数据传送
服务端收到 FIN,发送 ACK,进入 CLOSE_WAIT 状态,客户端收到这个 ACK,进入 FIN_WAIT2 状态
服务端发送 FIN,进入 LAST_ACK 状态,用来关闭 Server 到 Client 的数据传送
客户端收到 FIN,发送 ACK,进入 TIME_WAIT 状态,服务端收到 ACK,进入 CLOSE 状态(等 待 2MSL 时间,约 4 分钟。主要是防止最后一个 ACK 丢失。)

第一次挥手:主动关闭方发送一个 FIN,用来关闭主动方到被动关闭方的数据传送,也就是 主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在 fin 包之前发送出去的 数据,如果没有收到对应的 ack 确认报文,主动关闭方依然会重发这些数据),但是,此时 主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到 FIN 包后,发送一个 ACK 给对方,确认序号为收到序号+1(与 SYN 相同,一个 FIN 占用一个序号)。
第三次挥手:被动关闭方发送一个 FIN,用来关闭被动关闭方到主动关闭方的数据传送,也 就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。 第四次挥手:主动关闭方收到 FIN 后,发送一个 ACK 给被动关闭方,确认序号为收到序号+1, 至此,完成四次挥手。

8、tcp 为什么要三次握手?

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误

9、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 不会,除非手动设置。
 


10、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 生命周期被销毁

session 的工作原理?
session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完 之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问 服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。

11、一次完整的 HTTP 请求过程
域名解析 --> 发起 TCP 的 3 次握手 --> 建立 TCP 连接后发起 http 请求 --> 服务器响应 http 请求,浏览器得到 html 代码 --> 浏览器解析 html 代码,并请求 html 代码中的资源(如 js、 css、图片等) --> 浏览器对页面进行渲染呈现给用户。

12、HTTPS 和 HTTP 的区别
1.HTTP 协议传输的数据都是未加密的,也就是明文的,因此使用 HTTP 协议传输隐私信息非常不安全, HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议, 要比 http 协议安全。
2. https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

https://www.cnblogs.com/wqhwe/p/5407468.html

13、OSI 的七层模型都有哪些?

物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。

数据链路层:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层

网络层:将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择 最适当的路径。
传输层:在源端与目的端之间提供可靠的透明数据传输

会话层:负责在网络中的两节点之间建立、维持和终止通信

表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密

应用层:为用户的应用进程提供网络通信服务

14、http 长连接和短连接的区别
在 HTTP/1.0 中默认使用短连接。也就是说,客户端和服务器每进行一次 HTTP 操作,就建立 一次连接,任务结束就中断连接。而从 HTTP/1.1 起,默认使用长连接,用以保持连接特性。

15、什么是TCP粘包/拆包?发生原因?解决方案

一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是 TCP 的拆包和粘包问题。

原因:

1. 应用程序写入数据的字节大小大于套接字发送缓冲区的大小.

2. 进行MSS大小 的 TCP 分段。( MSS=TCP 报文段长度-TCP 首部长度)

3. 以太网的 payload 大于 MTU 进行 IP 分 片。( MTU 指:一种通信协议的某一层上面所能通过的最大数据包大小。)

解决方案:

1. 消 息定长。

2. 在包尾部增加回车或者空格符等特殊字符进行分割

3. 将消息分为消息头和消息尾。

4. 使用其它复杂的协议,如 RTMP 协议等。

16、TCP 如何保证可靠传输?
1. 三次握手。
2. 将数据截断为合理的长度。应用数据被分割成 TCP 认为最适合发送的数据块(按字节编 号,合理分片)
3. 超时重发。当 TCP 发出一个段后,它启动一个定时器,如果不能及时收到一个确认就重 发
4. 确认应答:对于收到的请求,给出确认响应
5. 校验和:校验出包有错,丢弃报文段,不给出响应
6. 序列号:对失序数据进行重新排序,然后才交给应用层
7. 丢弃重复数据:对于重复数据 , 能够丢弃重复数据
8. 流量控制。TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发 送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
9. 拥塞控制。当网络拥塞时,减少数据的发送。
校验和
序列号
确认应答
超时重传
连接管理
流量控制
拥塞控制

17、常见的状态码有哪些?
200 OK //客户端请求成功

403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的 URL
500 Internal Server Error //服务器发生不可预期的错误 URI 和 URL 的区别 URI,统一资源标识 符,用来唯一的标识一个资源。URL 可以用来标识一个资源,而且还指明了如何定位这个资 源。

18、什么是 SSL ?https 是如何保证数据传输的安全(SSL 是怎么工作保证安全的)

SSL(Secure Sockets Layer,安全套接层)是一种加密协议,用于在计算机网络中确保数据传输的安全性和私密性

SSL通过使用公钥和私钥对数据进行加密和解密,以防止数据在传输过程中被恶意拦截或篡改。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。它包括两个主要部分:

SSL记录协议和SSL握手协议。

SSL记录协议建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议则建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输,只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL。具有SSL证书的网站通常在URL前包含一个小挂锁,表示该网站可以安全地进行交易。
 

19、TCP 对应的应用层协议
FTP:定义了文件传输协议,使用 21 端口.

Telnet:它是一种用于远程登陆的端口,23 端口

SMTP:定义了简单邮件传送协议,服务器开放的是 25 号端口。

POP3:它是和 SMTP 对应,POP3 用于接收邮件。
UDP 对应的应用层协议
DNS:用于域名解析服务,用的是 53 号端口

SNMP:简单网络管理协议,使用 161 号端口

TFTP(Trival File Transfer Protocal):简单文件传输协议,69

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值