全面介绍软件安全测试分类,安全测试方法、安全防护技术、安全测试流程

一、软件系统设计开发运行安全

1、注重OpenSource组件安全检查和版本更新(black duck)

现在很多云、云服务器都是由开源的组件去搭成的,对于OpenSource组件应该去做一些安全检查和版本更新,尤其是版本管理,定期对在运行以及已经设计出来的软件OpenSource组件去做检查

2、注重安全扫描(Fortify、AppScan)

再就是注重安全扫描,动态扫描,可以用AppScan、WebInspect等工具,静态扫描,可以用Fortify等代码审计工具。这些工具都是全球知名的IT公司开发的,用这些工具可以解决知识储备不足的问题。如果没有安全从业人员,但是又想保证产品的安全,那就用工具来扫码就可以,工具里面集成了大公司里面安全专家总结出来的扫描知识库、编码的规则。在安全从业人员等级不够的情况下就可以用工具来替代。
同样,这些工具也是我们安全从业人员应该掌握的,第一掌握它的原理,第二掌握它的规则,为什么使用这些规则。

3、注重WAF和Firewall

还要注重WAF和Firewall,WAF全称是Web Application Firewall。应用防火墙是在过滤每一个访问的请求数据包里面有没有安全的风险,里面有没有SQL注入、XSS攻击、远程的攻击命令或者木马等,物理的防火墙是保证了只允许信任的主机或者信任的客户端去连接某一个端口。这两个一个是软件层面的防火墙,一个是硬件层面的防火墙。如果WAF没有做到有效拦截,就会导致木马进入到服务器里面,木马进入到服务器里面之后,就可能导致一些越权的执行命令,比如说拿到了一些特殊的文件。

举一个极端的例子,通过WAF入侵了一个服务器,将这个服务器作为一个跳板,可以向局域网中去散布木马和恶意软件,网络维护人员刚好中招这个木马,他的电脑中招之后,电脑上保存的连接每一个交换机、每一个防火墙的连接口令都会泄露,导致一连串的蝴蝶效应,硬件防火墙也就被破解掉了。

这时候从网络到服务器到数据库一直到最终外界,就变成像我们说的“犹入无人之境”一样。这是比较严重的,所以我们要更多的注重WAF,因为WAF是能够快速识别到这些访问数据的,而物理防火墙只识别IP地址。

4、注重端口扫描和异常记录

我们既然有了防火墙,主机上开放的端口肯定比防火墙上开放的端口多,主机上这些端口是不是应该开,是不是安全呢?每个端口通信记录是什么?有没有异常,这些都需要去监控或者审计,定期去分析,这是运维上保证安全的一种手段。

5、设计分层、环境迁移测试、模块隔离部署

之前有一次出差,在客户现场,是做银行系统的,他们的开发有一个安全信条,俗称八荣八耻,放置在大家最常去的地方,这个标语的内容就是:以开发安全的、可用的软件为荣,以在系统中留后门留彩蛋为耻。为什么会有这样的口号呢?因为银行系统但凡有一个彩蛋或者一个后门在的话,相当于是留了一个取款机。

我们设计分层主要是不要把服务器去混着用,小公司或者不成熟的开发公司可能会把所有东西都放到一个服务器上,不管是应用、数据库还是API接口,都在一个服务器上,就导致业务数据、运行数据、客户数据都在一起,这时候风险就很大,当任何一个层面出问题,都是不可控的。

6、环境迁移测试

再就是环境迁移测试,我们既然做了设计的分层,那就必须保证这些分层的模块去独立的运行,应该经得起环境迁移的测试,而不能是只能在某一种容器上跑而不能做迁移。

7、模块隔离部署

什么叫模块隔离?我们说数据和应用要分开来部署,应用里面的应用也要进行模块隔离。给财务部门的应用应该跟给信息化部门的应用分开、跟生产部门的分开。为什么呢,因为财务是大家都比较关心的,安全级别会高一些,生产比信息化要高一些,应用层面也要隔离,否则一个服务器上布了很多个应用,当一个应用出问题的时候,就会出现像我们一开始说的链珠的例子的情况,当一个珠子断掉的时候,所有的珠子都会断,这时候安全根本没有办法去做防御。

8、整流、熔断、防DDoS攻击

这些如果部署在云上应该都会有,但是应用层面一定要考虑整流、熔断,建议大家可以用一些开源的组件。整流、熔断的隐患不属于安全的隐患,它属于性能的隐患,但是性能隐患最终会导致安全隐患,性能出了问题,服务器宕机之后,安全问题就会随之而来。

9、注重审计和日志记录、不留后门入口

这也是刚才举的例子里的,我们做软件开发、软件测试、软件设计,要保证没有人为的损害,因为人是最不可控的,程序是运行的逻辑,写的是if,就运行if,写的是else,就运行else,写的循环就运行循环,但是人确是不可控的,我们经常听到“删库跑路”的情况,这也就是为什么要留审计日志、审计不留后门,第一个是为了防止“删库跑路”,再者不把所有权限都开放给一个人。一定要注重账号权限,账号权限就是一把钥匙。

二、Web应用安全监测

1、静态代码扫描(Fortify SCA、Find Bugs)

这块主要提供给开发,安全问题不是测试出来的,是开发出来的,在开发的过程中就已经将这个雷埋进去了,测试的时候只能去一个个排雷。更多是我们在开发阶段就不要去埋雷。

如何不埋雷呢?可能很多时候我们都不知道自己埋了一个雷,因为开发经验和开发阅历不够,这时候还是回归到我们刚才的话题,我们可以利用工具,直接把Fortify SCA或Find Bugs工具集成到开发环境中。这些工具可以帮助我们去解决编码或知识储备不足这样的情况。

2、动态扫描分析

主要是有WebInspect、 AppScan这两款工具,也有一些开源的工具,但是开源的工具知识库维护的比较少,规则库也不太更新或更新的不及时。这块是我们安全测试人员必须要掌握的,不仅要掌握工具怎么用,更多的是,要将工具扫描出的结果解释给开发,这是怎么样的一个漏洞,怎么样可以修复,修复之后怎样去验证。

3、舆情监控(CVE)

这个每个公司都逃不过,要么用开源组件,要么用厂商的中间件,要么用小的中间件,要么用小的数据库。

4、账户安全策略(密码初始化、密码找回、账户过期、密码过期、账户休眠)

很多应用中都不会去考虑这些,顶多考虑一个密码找回。密码初始化是说我们后台新建的账户,当这个账户真正开始用的时候,必须初始化一下密码。账户过期指的是,我的账户如果输错了多少次密码,必须让它过期或者冻结一段时间,防暴力破解密码。密码过期指的是,密码只能使用一段时间,比如说银行里的密码,可能只能使用一天,第二天就必须换密码。

5、账户休眠

最后一个就是账户休眠,比如说给高层领导分配了一个很高权限的帐号,但是他几乎不上这个系统,开发人员知道这个密码后,他就可以拿这个账户当后门一样用,这都是风险,所以要关注休眠账户,有没有异常登录,有没有休眠策略。

接下来还有拦截各种SQL注入,XSS跨站、网站挂马、篡改、拖库等黑客攻击,并做到实时更新防护策略,第一时间防御各种0day漏洞。这种0day漏洞跟CVE一样,也要做日程监控,因为一般黑客拿到这个漏洞,他是不会去公布的,除非厂商自己知道才会对外公布。有一个时间差,在这个时间差里,很多人已经遭受攻击了。

应对0day漏洞就需要在公司内部培养一个安全团队,去挖掘出来产品里有没有0day漏洞,也就是一个安全实验室。但是大部分公司没有能力去建立一个安全实验室,就可以借助百度、腾讯、阿里、360这些对外输出的公司,去做这块防护。

防数据伪造及数据投毒,为什么一个web应用安全要防数据呢?数据指的是用户输的各种数据,用户有可能输的是业务数据,但是如果不是普通的用户,有可能输的是经过精心伪造的数据,它跟病毒是一样的,可以做到指哪打哪。

数据投毒是在数据里加入了一些可以帮助我debug,或者帮我调试内容,就可以在系统里面打出一个个的断点,通过系统的断点就可以判断系统走到哪一步,就可以绕过支付环节,或者绕过权限验证,绕过服务器之间的数据通信,直接到达另外一个节点。

三、移动APP的安全检测

我们现在遇到的app一般有三个平台,andriod、ios、windows,大多都是andriod或ios。首先要保证开发环境是安全的,这里给大家举了一个例子,XcodeGhost事件

这个事件在网上影响是挺大的,为什么会有这样事件?就是因为我们在中国区开发的时候要下Xcode,这个安装包比较大,在苹果官网上下的比较慢,很多人就选择像装系统那样,别人有的,我直接Ghost回来在我的电脑上用,结果就因为Ghost事件拷贝了别人的环境,但是别人的环境是有木马的,就留了后门,你开发出来的每一个app里面都暗藏了一个后门,这就是XcodeGhost事件。

很多人可能买不起工具,就用破解,破解里面就可能有木马,就像一个录屏软件,你写一行代码,人家就将这个代码发给对方的服务器,你的软件著作权还没有申请完的时候,代码已经跑到别人的服务器上去了。

SDK安全,我们开发的时候经常要用一些SDK的包,或者说我们有的厂商就专门做SDK的工具,针对这块,国家也了一些规定,SDK包谁提供,谁就要提供它安全的保证,安全的服务,否则就不要发布。《 App 使用软件开发工具包(SDK)安全指引》 大家也可以去关注一下。

应用数据安全,数据需要加密。正常不root(越狱)的手机可以正常用,拿不到核心的数据,如果越狱之后,这些数据就像一张白纸,谁都可以拿到,就需要保证,越狱之后,即使拿到这些数据,这些数据也是加密的,需要做很多处理才可以看到原文。
给大家举个例子,2019年发布的《移动应用(App)数据安全与个人信息保护白皮书(2019年)》,一方面要保护数据安全,另一方面也要保证个人信息的收集使用安全。现在这块权责分明,谁收集,谁使用,谁保证安全,如果不能保证国家就会进行处罚。

反破解、反调试、反逆向,吾爱论坛上会有一些破解的方法,如:吾爱破解安卓逆向入门教程app逆向入门分析——破解某APP登录请求参数,这些都是入门级的,不能说你开发了一个软件,却连入门级的破解都防御不了。一定要保证软件的反破解、反调试、反逆向。

最后一点使用Fortify、 CodifiedSecurity在开发阶段尽早介入安全,保证代码的安全。

四、Android/iOS逆向&调试难度对比

下图是ios和android的逆向&调试难度的对比:


从表里看,每一项好像ios都比android要安全一些,但是话说回来,ios和android访问的是同一个系统,前台可能分了ios客户端和android客户端,但是对于后台来说,是同一个数据库,是同一个API服务器,如果能将android搞定的话,ios基本上也能如法炮制,虽然我不用ios的app,但是也可以通过效仿的方法,访问到ios可以访问的数据,这时候通过服务器就可以攻击到ios的设备上,这也是不安全的,所以需要双重的界定标准。一定要记住,虽然IOS安全,但是一旦出问题那将是雪崩式的问题。

五、Server安全检测

1、OS安全

端口安全、账户安全、漏洞扫描、入侵检测、最小服务集合、日志审计

这里面给大家说一下最小服务集合,我们经常会遇到windows服务器或者Linux服务器,它默认会带很多服务,比如说dhcp服务可能不需要,就不要把这些服务提起来。再就是日志审计,如果服务器受到入侵,黑客会想尽办法去抹除日志,让你查不到行踪,不知道他干了什么事情。所以日志审计一定要有,还要备份相应的时间,再就是审计日志不能删除。

2、软件安全

最小集合原则、阉割的系统更安全

为什么阉割的系统更安全?就像最小服务集合一样,我们把一些常用的,容易出漏洞的一些问题规避掉,比如说windows里面不放cmd、command这种命令,那你想入侵的时候就没有办法指定命令行,这时候就会相对安全一些。他猜得透系统的密码,但是猜不透系统里面有什么。

3、Web中间件安全

修改默认端口,提高入侵门槛,阻止低端扫描

默认端口大家都知道,只要经过一个Nmap的扫描,就能扫描到这台服务器开了一些什么端口,一打一个准。但是你把端口改了之后,他就需要去猜,这个端口到底是干什么的?比如说我就把数据库故意放到网络端,放到80,让他猜去吧。

4、DB安全

修改默认端口,补丁及时更新,定期日志审计、备份安全

DB安全里面备份安全很重要,sever安全检测层面上更要去强调备份,服务器是属于硬件,即使是云服务器,也很难说哪天会突然坏掉,坏了之后就需要把这些安全策略重新构建一遍,如果没有备份,这些安全策略就需要手工去加,特别繁琐,还容易遗漏。

5、缓存服务安全

性能监控,只开放服务端口,管理端口禁止开放

现在很多云服务器都被挂了一些叫“挖矿”的木马,原因就是开放了一些默认端口、管理端口之类的,把这些缓存服务管理端口禁止开放,只开放服务端口,加强性能监控,一旦服务器出现异常的性能问题,一般来说它可能出现安全问题。性能和安全是相伴出现的,批量扫描、批量攻击肯定会导致性能突然间就飙上去了。

6、云主机业务隔离、网络隔离、数据隔离

这个是很多大公司都在做的,用了几千台几万台云服务器,每个业务、每个数据、每个网络都需要去隔离的,否则就会出现服务器云安全级别的雪崩。

六、API服务安全检测

1、Swagger API接口说明屏蔽

· API接口列表保护

· 使用 API 网关

API接口最简单,也最容易被忽视。很多人写完接口后,忘记删除API接口列表,或者为了方便别人调用API接口,去写了一个说明文档,结果这个接口没加权限,导致黑客上去随便一扫,就可以发现这个API列表。

这个列表拿下来之后,攻击所有的API,尝试一遍,将所有不需要传参或者传参比较简单的API全部攻击一遍之后,就会导致数据泄露或者数据出问题。

API为什么容易被攻击?因为API直接连到数据库,API的访问是直接跟数据库进行交互。通过API访问的所有请求ip地址全部是服务器,导致你在监控层面很难去发现这出了什么问题,岂不知道黑客已经站在API服务器上去打数据库服务器了。所以API也是很关键的,一定要去保障它的安全。

2、API访问权限控制

· 增删改查API需要单独确权(Auth2.0 Token验证)

查询的就只能去查询,只能去get,而不能去post,需要修改的,可能有post权限,但一定没有delete权限。

· API访问审计(日志)

Token授权机制、时间戳超时机制<使用配额和限流>、API加密签名机制 。这里专门拿一张图来说明Token授权。


API没有办法去做登录验证,合理使用Token增加API安全的基础。

3、API版本安全

不同版本API直接兼容及信息保护。因为我们的API通常会开发1.0版本、1.1版本、2.0版本、2.2版本...每一个版本对应的客户端可能不同,比如说1.1版本对应的是app的1.0版本,到了2.0的时候对应的app的4.0、5.0,这个时候客户端的app可能有低有高,有不同的版本。导致API不能高版本一上线、低版本立即下线,这个时候兼容性以及信息保护就需要提到日程上。不能出现低版本的客户端可以访问高版本的数据、高版本的客户端可以访问更低版本客户端的数据,通过这种迂回的绕过,导致API中的数据暴露出来。

以上就是我们为大家介绍额软件安全测试的分类、安全测试方法、安全防护技术、安全测试流程的相关内容,如需 fortify、WebInspect、 AppScan等安全测试工具试用可私信我。

(谢绝转载,更多内容可查看我的主页)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十、文件上传和下载

文章目录 1. 文件下载2. 文件上传 1. 文件下载 使用ResponseEntity实现下载文件的功能 2. 文件上传

Springboot整合Prometheus+grafana实现系统监控

前言 Prometheus是一个开源的服务监控系统和时序数据库&#xff0c;它提供了强大的功能和灵活的架构&#xff0c;是目前主流的监控和管理应用系统的工具。 而Grafana是一个开源的数据可视化工具&#xff0c;与Prometheus集成&#xff0c;就可以可视化地监控系统的各个指标。 …

新增支持Elasticsearch数据源,支持自定义在线地图风格,DataEase开源BI工具v2.10.2 LTS发布

2024年11月11日&#xff0c;人人可用的开源BI工具DataEase正式发布v2.10.2 LTS版本。 这一版本的功能变动包括&#xff1a;数据源方面&#xff0c;新增了对Elasticsearch数据源的支持&#xff1b;图表方面&#xff0c;对地图类和表格类图表进行了功能增强和优化&#xff0c;增…

常用数字器件的描述-时序逻辑器件的描述

目录 锁存器与触发器 寄存器与移位寄存器 分频器及其应用 偶分频器 奇分频器 半整数分频器 分频器的应用 锁存器与触发器 锁存器与触发器是两种最基本的存储电路。 锁存器是电平敏感器件&#xff0c;而触发器是边沿触发器件。 为了使用灵活方便&#xff0c;商品化的锁…

今天出了10个4声母 .com

价格蛮低的 &#xff0c;VJ.VT.Q.Q 十个 遥想当年6.5万收的5个四声母.com&#xff0c;上面有2个就在下图中呀&#xff0c;赔大发了

【JAVA】使用IDEA创建maven聚合项目

【JAVA】使用IDEA创建maven聚合项目 1.效果图 2.创建父模块项目 2.1删除父模块下面的src目录以及不需要的maven依赖 3创建子模块项目 3.1右击父模块项目选择Module… 3.2创建子模块 3.3删除子模块下不需要的maven依赖 4.子模块创建完成后引入SpringBoot依赖启动项目

OKG Research:用户意图驱动的Web3应用变革

出品&#xff5c; OKG Research 作者&#xff5c;Samuel QIN 当前加密市场的快速演变中&#xff0c;用户增长成为行业可持续发展的基石。目前主流观点在推动行业前进的路上&#xff0c;从单纯的技术探索在向更注重应用价值的方向转变。尽管近年来Web3生态系统发展迅速&#xf…

云渲染与云电脑,应用场景与技术特点全对比

很多朋友问&#xff0c;你们家一会宣传云渲染&#xff0c;一会宣传云电脑的&#xff0c;我到底用哪个&#xff1f;今天&#xff0c;渲染101云渲染和川翔云电脑就来对比下两者的区别&#xff01; 渲染101&川翔云电脑&#xff0c;都是我们的产品&#xff0c;邀请码6666 一、…

鸿蒙进阶篇-属性动画-animateTo转场动画

大家好啊&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习属性动画-animateTo&转场动画&#xff0c;咱们先来学习属性动画-animateTo 属性动画-animateTo 属性动画 animation是作为属性使用&#xff0c;而animateTo显示动画是一个系统的内置函数&#xff0c;可以…

我谈正态分布——正态偏态

目录 pdf和cdf参数 标准正态分布期望和方差分布形态 3 σ 3\sigma 3σ原则 正态和偏态正态偏态瑞利分布偏度 (Skewness)峰度 (Kurtosis) 比较 正态分布的英文是Normal Distribution&#xff0c;normal是“正常”或“标准”的意思&#xff0c;中文翻译是正态&#xff0c;多完美的…

从无音响Windows 端到 有音响macOS 端实时音频传输播放

以下是从 Windows 端到 macOS 端传输音频的优化方案&#xff0c;基于上述链接中的思路进行调整&#xff1a; Windows 端操作 安装必要软件 安装 Python&#xff08;确保版本兼容且已正确配置环境变量&#xff09;。安装 PyAudio 库&#xff0c;可通过 pip install pyaudio 命令…

AI知识库在行业应用中的未来趋势与案例分析

在数字化转型的浪潮中&#xff0c;AI知识库正成为企业提升效率和创新能力的关键工具。本文将探讨AI知识库在不同行业的应用案例&#xff0c;并分析其未来发展趋势。 一、汽修行业的AI知识库应用 汽修行业正通过构建内部知识库来提升服务质量和工作效率。一个完善的内部知识库能…

STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55

STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55 前面我们讲述了几种BootLoader中的命令&#xff0c;包括获取软件版本号、获取帮助、获取芯片ID、读取Flash保护Level。 下面我们来介绍一下BootLoader中最重要的功能之一—跳转&#xff01;就像BootLoader词汇中的Boot…

sqlite3数据库的相关API使用

1 1:使用sqlite3_exec函数读取数据库的数据,将这些数据存入链表遍历该链表&#xff0c;输出“字段”“数据”2:使用sqlite3_get_table读取数据库的数据写一个“字段" "数据”输出的循环 1 #include <stdio.h> #include <string.h> #include <unistd.…

基于Python下载HYCOM-3hourly数据(可无脑用)

基于Python下载HYCOM-3hourly数据 一、安装库二、主要函数2.1 draw_time_range2.2 download2.2.1 下载函数2.2.2 必传入参数&#xff1a;2.2.3 其他参数&#xff1a; 2.3 merge5nc 三、完整代码3.1 乱七八糟版3.2 精简版3.3 get_time_list 四、效果4.1 终端4.2 nc文件4.3 全文本…

Hbase集群搭建

1. 环境 三台节点hadoop 集群zookeeper 集群hbase 1.1环境准备 使用前文hdfs三台节点 1.11 zookeeper搭建 下载 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz解压 tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz zookee…

为什么用SQL而不是Excel+VBA?

SQL主要服务数据库 SQL服务的是MySQL、Oracle、SQL Sever、Hive等各大数据库&#xff0c;它们都需要SQL来管理、定义。题主理解的SQL只限于查询数据、清洗数据&#xff0c;这些当然ExcelVBA都能做到&#xff0c;任何编程语言都能做到&#xff0c;但事实是SQL是数据库的管理工具…

Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别

目录 一、概念 1、纹理过滤 2、邻近过滤 3、线性过滤 二、邻近过滤和线性过滤的区别 三、源码下载 一、概念 1、纹理过滤 当纹理被应用到三维物体上时&#xff0c;随着物体表面的形状和相机视角的变化&#xff0c;会导致纹理在渲染过程中出现一些问题&#xff0c;如锯齿…

OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示

当打开蓝牙后没有反应时&#xff0c;需要排查蓝牙节点是否对应、固件是否加载成功&#xff0c;本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法&#xff0c;触觉智能SBC3568主板演示 修改对应节点 开发板蓝牙硬件连接为UART1&#xff0c;修改对应的节点&#xff0c;路径为…

Kafka高频面试题详解

1、kafka是如何做到高效读写 1&#xff09;Kafka 本身是分布式集群&#xff0c;可以采用分区技术&#xff0c;并行度高 2&#xff09;读数据采用稀疏索引&#xff0c;可以快速定位要消费的数据。&#xff08;mysql中索引多了之后&#xff0c;写入速度就慢了&#xff09; 3&a…