1.服务端正常启动了,但是客户端请求不到有哪些原因?如何排查?
2.服务器ping不通但是http能请求成功,会出现这种情况吗?什么原因造成的?
3.什么是ddos攻击?怎么防范?
4.SQL注入问题是什么?
5.CSRF攻击是什么?
6.XSS攻击是什么?
7.了解过DNS劫持吗?
8.用户态和内核态的区别?
9.线程和进程的区别是什么?
10.进程,线程,协程的区别是什么?
1.服务端正常启动了,但是客户端请求不到有哪些原因? 如何排查?
- Ping一下服务端的IP地址,判断IP地址是否正确。
- 检查被测接口端口号是否正确,可以在本机Telnet接口的IP和端口号,检查端口号能否连通。
- 如果以上都正确,那么就查看服务端的防火墙是否开放了对应的ip和端口。
- 最后检查你使用的客户端,是否设置了网络代理等网络设置导致请求失败。
若在有响应代码的话,可以根据响应代码排除故障。
4开头是客户端请求有问题,5开头是服务端的问题。
2.服务器ping不通但是http能请求成功,会出现这种情况吗?什么原因造成的?
ping 走的是 icmp 协议,http 走的是 tcp 协议。
有可能服务器的防火墙禁止 icmp 协议,但是 tcp 协议没有禁止,就会出现服务器 ping 不通,但是 http 能请求成果。
3.什么是ddos攻击?怎么防范?
DDoS(分布式拒绝服务)攻击是一种通过大量分布在不同地方的计算机或设备(通常是受感染的僵尸网络)向目标服务器、网站或网络发送大量请求,造成目标资源耗尽或系统崩溃,从而使其无法正常提供服务。
4.SQL注入问题是什么?
SQL注入是一种常见的网络攻击方式,攻击者通过在输入字段(如表单、URL、查询字符串等)中插入恶意的SQL代码,来操控后端数据库系统执行未授权的操作。 通过这种方式,攻击者可以读取、修改、删除数据库中的数据,甚至执行系统命令或获取敏感信息。
#{} = ?而${}是String替换,易发生SQL注入。
5.CSRF攻击是什么?
CSRF(跨站请求伪造)攻击是一种利用已认证用户的身份,伪造请求执行恶意操作的攻击方式。攻击者诱使受害者在已登录的情况下,向目标网站发送未经授权的请求,从而在受害者不知情的情况下执行危险的操作,例如转账、修改密码或删除数据。
CSRF攻击的原理:
- 攻击者首先诱使用户访问一个恶意网站。
- 在这个恶意网站上,攻击者通过脚本、表单等方式向受害者已经登录的目标网站发起请求。
- 因为目标网站认为请求来自合法用户(受害者已登录),会执行该操作(如提交表单、修改数据等),即使受害者并没有主动发起这些操作。
防范CSRF的常见方法:
- 使用Token验证: 在每个敏感请求中加入一个唯一的随机Token,服务器验证这个Token是否有效。常用的做法是使用“CSRF Token”作为验证机制,确保请求是由用户合法发起的。
- 验证Referer头: 服务器可以检查请求头中的Referer字段,确保请求来源于受信任的页面。如果不是,则拒绝请求。
- SameSite Cookie属性: 通过设置Cookie的SameSite属性,可以限制浏览器仅在同站请求时发送Cookie,从而防止跨站请求伪造。
- 双重身份验证: 对于敏感操作,要求用户输入二次身份验证(如验证码或短信验证码),以防止自动化伪造请求。
6.XSS攻击是什么?
XSS(跨站脚本攻击)是一种常见的网络攻击方式,攻击者通过在网页中注入恶意脚本(通常是JavaScript)来攻击其他用户。XSS攻击的目标是执行恶意脚本,窃取用户信息、篡改网页内容、劫持用户会话或进行其他恶意操作。
XSS的基本原理:
- 攻击者在受害者访问的网页中注入恶意脚本。
- 当受害者浏览该网页时,恶意脚本会在浏览器中执行,通常以用户的身份进行操作。
- 这些恶意脚本可以窃取用户的Cookie、会话信息、输入的表单数据,或执行一些未授权的操作。
7.了解过DNS劫持吗?
8.用户态和内核态的区别?
内核空间(Kernal Space),这个空间只有内核程序可以访问;用户空间(User Space),这部分内存专门给应用程序使用。
内核态(Kernel Mode): 在内核态下,CPU可以执行所有的指令和访问所有的硬件资源。这种模式下的操作具有更高的权限,主要用于操作系统内核的运行。
用户态(User Mode): 在用户态下,CPU只能执行部分指令集,无法直接访问硬件资源。这种模式下的操作权限较低,主要用于运行用户程序。
内核态的底层操作主要包括:内存管理、进程管理、设备驱动程序控制、系统调用等。这些操作涉及到操作系统的核心功能,需要较高的权限来执行。
9.线程和进程的区别是什么?
在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。
根本区别: 进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
资源开销: 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系: 如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
内存分配: 同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的。
影响关系: 一个进程崩溃后,在保护模式下不会对其他进程产生影响 ,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程: 每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行 。
10.进程,线程,协程的区别是什么?
进程。 进程是操作系统中进行资源分配和调度的基本单位 ,它拥有自己的独立内存空间和系统资源。
线程。 线程是进程内的一个执行单元,也是CPU调度和分派的基本单位。 各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。
协程。 是一种基于线程之上,但又比线程更加轻量级的存在,这种由程序员自己写程序来管理的轻量级线程叫做『用户空间线程』,具有对内核来说不可见的特性。协程拥有自己的寄存器上下文和栈,但与其他协程共享堆内存。协程的切换开销非常小,因为只需要保存和恢复协程的上下文,而无需进行内核级的上下文切换。 一个线程可以多个协程,一个进程也可以单独拥有多个协程。