01.HTTPS 与 HTTP 的区别?
02.OSI七层模型是指?
03.你所知道的 HTTP 状态码?
04.你知道SQL注入吗?
05.SQL 注入与XSS 的区别?
06.CSRF与XSS 的区别?
07.鱼叉式攻击和水坑攻击的区别?
08.什么是虚拟机逃逸?
09.你知道堡垒机吗?堡垒机有什么用?
10.你知道中间人攻击吗?
11.你如何进行API的安全性测试?
1、HTTPS 与 HTTP 的区别?
1.安全性:HTTP是一个无状态的、应用层的协议,信息是明文传输,主要用于在Web浏览器和服务器之间传输超文本,数据可以被任何在传输路径上的设备读取或篡改。
HTTPS则是具有安全性的ssl加密传输协议。HTTPS协议由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
2.端口:HTTPS通常使用443端口,而HTTP使用80端口。
3.传输方式:HTTPS协议需要到ca申请证书,包含服务器的公钥和相关信息。当客户端(如Web浏览器)与服务器建立HTTPS连接时,会验证服务器的证书是否有效和可信。如果证书无效或不被信任,客户端会拒绝与服务器建立连接。一般免费证书较少,因而需要一定费用。
互联网公司大都会用HTTPS来保障用户数据的安全性,当用户访问一个使用HTTPS的网站时,他们可以看到浏览器地址栏中的URL以“https://”开头,并且可能会显示一个绿色的锁图标或类似的标志,表示该连接是安全的。
2、OSI七层模型是指?
OSI七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
1.应用层:OSI参考模型中最靠近用户的一层,提供人机交互的接口,为用户提供各种网络服务。我们常见应用层的网络服务协议有HTTP,HTTPS,FTP,POP3、SMTP等;
2.表示层:解决编码、加密、压缩等问题;
3.会话层:会话的建立、终止、维护,起到会话隔离的作用;
4.传输层:提供可靠的透明的端到端的通信,并进行差错控制和流量控制。我们通常说的,TCP/ UDP就是在这一层。端口号既是这里的“端”,是最核心的一层;(段/包文)
5.网络层:用IP地址寻址,并进行路径的选择;(包/分组)
6.数据链路层:负责帧在计算机之间的无差错传递;(帧)
7.物理层:利用物理传输介质,将数据以比特流的形式传输。(比特流)
3、你所知道的 HTTP 状态码?
HTTP状态码是服务器对客户端请求的响应,用于表示Web服务器处理HTTP请求的结果。它们是一个三位数的代码,按照用途被分为五类:1xx(信息性状态码)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)。
1xx :信息性状态(Info)——表示服务器收到请求,需要请求者继续执行操作;
2xx :成功(Successful)——表示请求已被成功接收、理解、接受;
3xx :重定向(Redirection)——要完成请求必须进行更进一步的操作;
4xx:客户端错误(Client Error)——表示请求可能有语法错误或请求无法实现,妨碍了服务器的处理;
5xx :服务器端错误(Server Error)——表示服务器在处理请求的过程中发生了内部错误,未能实现合法的请求。
常见状态码:
• 200:成功(OK )——服务器已成功处理了请求;
• 301:永久移动(Moved Permanently)——请求永久重定向,请求的页面已永久移动到新位置;
• 302:临时移动(Found )——请求临时重定向, 服务器目前从不同位置的网页响应请求,资源只是临时被移动,但请求者应继续使用原有URL来进行以后的请求;
• 304 :未修改(Not Modified)——文件未修改,可以直接使用缓存的文件;
• 400 :错误请求(Bad Request )——由于客户端请求有语法错误,不能被服务器所理解;
• 401 :未授权(Unauthorized)——请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用;
• 403:禁止(Forbidden)——服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因;
• 404:未找到(Not Found )——请求的资源不存在,例如,输入了错误的URL;
• 500 :服务器内部错误( Internal Server Error )——服务器发生不可预期的错误,导致无法完成客户端的请求;
• 503 : 服务不可用(Service Unavailable )——服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常;
测试工作中,可以根据HTTP状态码来定位问题。比如测试一个Web应用时,如果某个页面无法加载,查看浏览器返回的HTTP状态码。如果状态码是404,那么可能是服务器上没有找到对应的资源文件;如果状态码是500,那么需要检查服务器端的日志来查找具体的错误原因。
此外,日常工作中根据状态码来优化测试策略。比如,对于经常返回404状态码的页面,在测试计划中增加更多的覆盖这些页面的测试用例,确保这些页面在后续的迭代中不会出现问题。
4、你知道SQL注入吗?
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,攻击者可以通过SQL注入来访问、修改或删除数据库中的敏感数据,甚至可能获得数据库的管理员权限。实现无账号登录,甚至篡改数据库。
SQL注入原理:
1.利用Web应用程序中的输入验证和过滤机制的不足,将恶意的SQL代码插入到用户输入的参数中。
2.参数被用于构建SQL查询语句,当查询语句被发送到数据库服务器执行时,恶意代码也会被一起执行。
3.攻击者可以通过这种方式获取数据库中的敏感信息、篡改数据、甚至执行系统命令。
防御SQL注入:
1.对用户输入进行严格的验证和过滤,确保输入数据的合法性和安全性。
2.使用参数化查询或预编译语句来构建SQL查询语句,避免直接将用户输入拼接到查询语句中。
3.最小化数据库权限,确保应用程序只具有执行必要数据库操作所需的最低权限。
4.定期对应用程序进行安全审计和代码审查,及时发现和修复潜在的安全漏洞。
5、SQL 注入与XSS 的区别?
SQL注入:向Web应用程序提供的用户输入域中注入恶意的SQL代码,从而欺骗数据库服务器执行非授权的查询,获取或篡改数据的攻击方式。其原理是利用Web应用程序对用户输入数据的合法性没有严格判断或过滤的缺陷。
XSS(跨站脚本攻击):在Web页面中插入恶意脚本代码,当用户浏览该页面时,脚本代码会被执行,从而盗取用户信息或侵犯用户安全隐私,XSS攻击通常利用的是网页开发时留下的漏洞。
比如,在一个电子商务网站上,如果用户在搜索框中输入的查询没有得到适当的处理,就可能发生XSS攻击。攻击者可能会输入一个包含JavaScript代码的搜索词,如果这个代码没有被适当地清理或编码,它就可能在其他用户的浏览器中执行,导致会话劫持或其他安全问题。
6、CSRF与XSS的区别?
CSRF:利用用户已经通过身份验证的会话来执行未经授权的操作。攻击者通过欺骗用户来执行恶意操作,而用户并不知情。在CSRF攻击中,攻击者构造一个包含恶意操作的HTTP请求,诱使用户在已登录的Web应用程序上执行这个请求,从而利用用户的身份和权限进行非法操作。
XSS(跨站脚本攻击):在Web页面中插入恶意脚本代码,当用户浏览该页面时,脚本代码会被执行,从而盗取用户信息或侵犯用户安全隐私,XSS攻击通常利用的是网页开发时留下的漏洞。
在一个在线购物网站中,如果用户在浏览商品时点击了一个链接,这个链接实际上是一个CSRF攻击,它可能会在用户的浏览器中自动发起一个购买操作,而用户对此一无所知。而如果用户在留言板中输入的内容没有得到适当的处理,就可能发生XSS攻击,其他用户在查看留言板时,他们的浏览器可能会执行这段恶意脚本。
7、鱼叉式攻击和水坑攻击的区别?
鱼叉式攻击:针对特定个人或组织的网络钓鱼攻击,攻击者发送伪装成正规机构或个人的电子邮件,诱使受害者泄露个人信息或点击恶意链接,从而达到窃取敏感信息、传播恶意软件等目的。
水坑攻击:针对特定目标群体的网络攻击方式,攻击者首先确定这组目标经常访问的网站,并入侵其中一个或多个,植入恶意软件,等待目标访问时触发恶意代码,达到感染目标的目的。
8、什么是虚拟机逃逸?
虚拟机逃逸是指攻击者通过利用虚拟机软件或虚拟机中运行的软件漏洞,突破虚拟机的限制,实现与宿主机操作系统交互的一个过程。简单来说,就是攻击者能够绕过虚拟机的安全隔离机制,直接访问或控制宿主机系统。
实现虚拟机逃逸,通常满足以下条件:
1.存在漏洞:虚拟机软件或宿主机操作系统中存在可被利用的漏洞。
2.提权操作:攻击者需要在虚拟机中执行能够提升权限的操作,如执行系统级别的敏感指令。
3.渗透隔离机制:攻击者需要破坏虚拟机的隔离机制,实现与宿主机的交互。
9、你知道堡垒机吗?堡垒机有什么用?
堡垒机,也称为跳板机或远程访问服务器,是一种网络安全设备,它允许管理员控制和监控用户对服务器和其他网络资源的访问。它通常用于集中管理和记录用户会话,确保只有授权用户才能访问特定的系统资源,并且所有访问行为都会被记录和审计。
堡垒机的主要优势在于提供了一个集中的访问点,可以加强访问控制和安全审计。
堡垒机在网络环境中的体现在以下3个方面:
1.细粒度的访问控制:通过堡垒机访问控制功能,可以实现对运维人员操作行为的精细化管理,降低操作风险。
2.运维过程的管控和审计:堡垒机的审计录像功能可以记录运维人员的操作行为,为事后追责提供可靠依据。堡垒机的实时监控和智能告警功能,可以及时发现潜在的安全威胁和异常行为。
3.提高安全性:堡垒机可以拦截非法访问和恶意攻击,过滤掉所有对目标设备的非法访问行为,并对内部人员误操作和非法操作进行审计监控,大大提高网络和数据的安全性。
如果一个公司的IT部门需要确保员工只能访问他们需要的资源,同时记录所有的访问行为以满足合规性要求,可以使用堡垒机来实现这一点。
10、你知道中间人攻击吗?
中间人攻击(MITM),攻击者通过技术手段将自己置于通信双方之间,从而拦截、读取、修改或伪造传输的数据,而通信的双方却毫不知情。这种攻击方式能够对用户数据的安全性和完整性造成严重威胁。
中间人攻击的常见方式包括截取会话Cookie、篡改传输数据、甚至劫持整个会话。例如,如果用户在公共Wi-Fi网络上进行在线银行操作,攻击者可以设置一个假的热点,当用户连接后,攻击者就可以截取用户的所有网络请求和响应。中间人攻击可能导致敏感信息泄露,如用户名、密码、信用卡信息等,甚至可以被用来进行身份冒充或进一步的网络攻击。
防范中间人攻击,可以采取以下措施:
1.使用HTTPS等加密协议来保护数据传输的安全。
2.采用证书和公钥基础设施(PKI)来验证通信双方的身份。
3.识别钓鱼网站和不安全的网络连接。
11、你如何进行API的安全性测试?
API的安全性主要涉及到数据保密性、完整性和可用性等方面。在数据传输过程中,如果未采取适当的加密措施,数据可能会被截获和篡改。此外,如果API存在逻辑漏洞或设计缺陷,攻击者可能会利用这些漏洞进行恶意操作。
测试API的安全性时,可以采取以下策略:
1.输入验证:确保API能够正确处理各种输入,包括正常输入和异常输入。通过模糊测试和边界值测试等方法,包括类型、范围、长度、格式等,防止输入参数被恶意利用,使用正则表达式、白名单、黑名单等方式进行验证,检查API是否对非法输入进行了有效的过滤和处理。
2.权限控制:验证API的权限控制机制是否有效,检查是否只有授权用户才能访问特定的API,并且用户只能执行其权限范围内的操作。
3.安全漏洞扫描:使用专业的安全漏洞扫描工具对API进行扫描,以发现可能存在的安全漏洞。这些工具可以自动检测常见的安全漏洞,如SQL注入、跨站脚本攻击(XSS)等。
4.加密传输:确保API在传输敏感数据时使用了适当的加密技术,比如使用HTTPS协议进行数据传输,以确保数据在传输过程中的保密性和完整性。
5.安全编码检查:对接口代码进行安全编码的检查,确保在接口设计、实现、发布过程中遵循安全编码规范,如OWASP Top 10、SANS CWE Top 25等。
比如,对于一个用户信息获取的接口,首先进行输入验证测试,确保用户ID等参数的有效性;然后进行权限控制测试,确保只有授权的用户才能获取用户信息;最后进行加密传输测试,确保用户信息在传输过程中的安全性。