在软件测试的面试过程中,安全测试的相关知识,可以说是很高频了,下面为大家整理了一些安全测试相关的面试题,拿走不谢~
一、什么是安全测试?
安全测试 是一种软件测试,可发现软件应用程序中的漏洞,威胁和风险,可以防止来自入侵者的恶意攻击。
如果产品有高危漏洞,不小心被黑客袭击,导致服务器瘫痪或资金损失,重要数据泄露和丢失,或者服务器资源被黑客恶意利用,会导致公司业务无法正常运转或损失惨重。
二、安全测试的目的是什么?
1、提升产品的安全质量
进行安全测试,可以找到安全漏洞,例如常见的SQL注入、跨站点请求伪造CSRF、跨站脚本攻击XSS等安全问题。
2、降低修复成本
在产品发布前找到安全问题,并予以修复,可以大大降低修复成本。
3、度量安全等级
通过安全测试,我们能发现安全问题,进行评估系统的安全等级。
三、安全测试的七种类型是什么?
- 漏洞扫描:自动软件针对已知的漏洞扫描系统。
- 安全扫描:手动或自动识别网络和系统弱点的技术。
- 渗透测试:渗透测试是关于安全测试的,它有助于识别系统中的漏洞。
- 风险评估:包括对系统中可能的风险进行分析,风险分为低、中、高三种。
- 安全审计:完成对系统和应用程序的检查,以检测漏洞。
- 道德黑客:为检测系统中的缺陷,而非个人利益对系统进行的黑客攻击。
- 态势评估:将安全扫描、道德黑客和风险评估结合起来,以显示组织的总体安全态势。
四、什么是安全漏洞?
安全漏洞 是指受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点,漏洞是硬件软件或使用策略上的缺陷,他们会使计算机遭受病毒和黑客攻击。
从软件测试的角度,也可以理解为系统有关安全问题的Bug。
五、常用的安全测试工具有哪些?
1、AppScan
一款安全漏洞扫描工具,支持Web和移动端,在进行“探索”和“测试”后,可直接生成测试报告,有助于开发和测试人员复现和修复漏洞,使用方便。
2、Burp Suite
是一款集成化且成熟的渗透测试工具,包含Proxy、Spider、Scanner、Intruder、Repeater、Sequencer、Decoder、Comparer等工具模块,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击。
3、Nmap
是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
4、 SQLMap
是一款基于Python编写的开源渗透测试工具,在SQL检测和利用方面功能强大,支持多种数据库。其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。
5、OpenVAS
OpenVAS 是一个全功能的漏洞扫描器。它的功能包括非认证测试、认证测试、各种高水平和低水平的互联网和工业协议、大规模扫描的性能调整和一个强大的内部编程语言来实现任何类型的漏洞测试。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。
OpenVAS服务端只允许安装在Linux系统上。
6、Acunetix
Acunetix是一款网络漏洞扫描软件,它可以检测网络的安全漏洞。
7、Fortify
一款静态代码检查工具。Fortify是Micro Focus旗下AST (应用程序安全测试)产品,其产品组合包括:Fortify Static Code Analyzer提供静态代码分析器(SAST),Fortify WebInspect是动态应用安全测试软件(DAST),Software Security Center是软件安全中心(SSC)和 Application Defender 是实时应用程序自我保护(RASP)。
8、Drozer
是一款针对Android系统的安全测试框架。提供了很多Android平台下的渗透测试exploit供你使用和分享,对于远程的exploit,它可以生成shellcode帮助你进行远程设备管理。
9、Nessus
一款号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。
Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。Nessus也是渗透测试重要工具之一。
10、ZAP
OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,有助于在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。
六、什么是SQL注入?
SQL注入 是一种比较常见的高等级漏洞,简单理解,SQL注入就是没有过滤从页面传至接口的字符,攻击者通过将恶意的SQL查询插入到输入参数中,在后台服务器上解析进行执行,最终导致数据库信息被篡改或泄露。
举个例子:
假设用户进行登录的SQL是这样的:
select * from users where user = '&user&' and passwd = '&passwd&'
当我们用admin做用户名,1' or 'a' = 'a作为密码进行登录时,SQL就是
select * from users where user = 'admin' and passwd = '1' or 'a' = 'a'
根据或运算规则,最后的结果为真,就成功登录进入后台了。
七、SQL注入的修复方式有哪些?
1、程序代码里的所有查询语句,使用标准化的数据库查询语句API接口,设定语句的参数进行过滤一些非法的字符,防止用户输入恶意的字符传入到数据库中执行sql语句。
2、对用户提交的的参数安全过滤,像一些特殊的字符(,()*&……%#等等)进行字符转义操作,以及编码的安全转换
八、什么是跨站点请求伪造CSRF?
CSRF( Cross-site request forgery):跨站请求伪造,简单说,攻击者盗用了你的身份(借用你的token),以你的名义发送恶意请求,而你却不知情。
恶意攻击者往Web页面里插入恶意的HTML代码,当用户浏览该页之时,嵌入其中Web里面的HTML代码会被执行,从而达到恶意目的。
举个例子:攻击者写了一段删除某个财务系统数据的代码,放在任意一个广告页面的链接上。当其他用户浏览广告页面时,只要有用户例如Emily登录了财务系统,点击了该链接,就会在用户Emily无意识的情况下,以Emily的名义删除了财务系统的很多数据,达到了恶意攻击的目的。
实际的场景:攻击者盗用账号转钱,添加管理员,购买商品,发送邮件等等。
九、跨站点请求伪造csrf的修复方式有哪些?
跨站点请求伪造csrf的修复方式有两种:
1、添加Token,发请求时带上Token。处理请求的时候需要验证Cookie+Token。
2、请求头中Referer参数需要校验请求来源是否是目标网页发出。
缺点:
- Refer值由浏览器提供,不能保证浏览器自身没有安全漏洞。
- 用户可以自己设置浏览器,让其在发送请求时不提供Refer值。
优点:
- 简单易行
实际项目中,一般采用添加Refer请求头和添加Token组合的方式,来防止csrf的攻击。
十、什么是跨站点脚本攻击XSS?
跨站点脚本攻击 XSS:指利用网站漏洞从用户那里恶意盗取信息。简单理解,就是用户输入中可加入JS等破坏性的代码,而程序没有进行过滤,还执行了这些代码,达到了恶意攻击的目的。
主要有存储型、反射型和DOM(基于文档对象模型)三种类型:
1、存储型:攻击的数据会保存到数据库,一般存在于post的写请求或者get的写请求。