安全测试方法介绍(上)静态源代码审查

软件开发完成之后,我们需要进行安全验证,验证我们的软件是不是符合安全要求。软件安全测试主要有以下几个方面:确定软件的安全特性实现是否与预期设计一致的过程;有关验证软件安全等级和识别潜在安全缺陷的过程;查找软件自身程序设计中存在的安全隐患,并检查;应用程序对非法侵入的防范能力。 

为什么需要软件安全测试?主要是因为传统测试仅考虑软件出错时的处理,没有考虑对软件的故意安全攻击,所以需要专业的软件安全测试。

在应用投产前,应由独立的安全团队对应用的安全性进行综合评估,一般会从两个层面进行开展,一方面是功能性安全测试,另一方面是对抗性安全测试。

安全主要测试方法主要有:静态源代码审查,这个在编码阶段就可以进行,这个阶段如果出现问题,修复起来成本也比较低。程序发布之后可以进行渗透测试。

先给大家介绍一下源代码审查。作为软件测试的基本方法,静态分析可以快速、准确定位到软件缺陷的源代码。能有效的提高软件的可靠性和安全性。

静态分析是指在编译理论的基础上,对程序的结构、语义做软件安全性方面的分析。

静态源代码审查可以通过人工和工具相结合的方式对源代码的安全性进行测试,可以识别、跟踪和修复源代码中技术上和逻辑上的缺陷,比如软件安全漏洞、质量缺陷问题和业务逻辑问题等。
静态代码审查方法主要是在编码阶段进行测试,尽可能早地发现安全性问题。

静态源代码审查在某些行业是有些要求的,像金融银行业网上银行系统信息安全通用规范,会要求由第三方机构进行安全检测。

【源代码审查-人工审计】
人工审计部分内容的部分除了对工具扫描出来的问题进行审查,以下问题进行检查。
环境安全:第三方软件安全、开发环境安全、运行环境安全等。如中间件使用安全,是否使用最新版本的JDK,移动APP发布前是否使用混淆、签名、加固等保护方式等检查。
配置核查:对应用的配置方面进行全面检查,包括默认的安全配置、后台权限、运行账号、系统配置和运行环境等全面核查。
【反射型XSS攻击】
下图是我之前做过的一个截图,这是一个XSS的攻击,通过源代码审查可以把注入点定位出来,我们可以看到这是从请求中获取了一个字段,经过一个数据流返回到了用户这边。这是一个存储型的,从前段录入的一些信息,入库之后,再从库中取出来。


【XSS代码修复方式】
XSS攻击可以通过过滤器的方式规避,像Spring Boot里的过滤器。请求来的时候,先进过滤器,过滤之后,在进Servlet。
 


【SQL注入攻击】
下图是一个SQL注入攻击的例子,这是Mybatis的框架,我们可以看到框线中是用$符取了一个前端的参数,很容易造成SQL注入。

【SQL注入攻击修复方式】
Mybatis中建议用#的方式,这种方式会自动在参数两边加单引号,这样就能在一定程度上防止SQL注入。

(本系列文章根据《优品软件培育计划》公益直播内容整理,可以私信我获取直播回放链接。)

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

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

相关文章

云服务器下WordPress发送邮件的设置

WordPress的邮件功能很强大,可以实现用户密码以往后自助恢复等问题。 WordPress默认是使用php发邮件的,php需要配置好smtp(端口25)服务器及密码。这种方式不直观,因此一般都用smtp插件,常用的插件是WP Mai…

6.2.6 网络基本服务----电子邮件系统(E-mail)

6.2.6 网络基本服务----电子邮件系统(E-mail) 电子邮件系统是因特网上使用的最多且最受用户欢迎的一种应用 电子邮件系统包括用户代理和邮件服务器,提供收发邮件、邮件传送服务,邮件被传送到收信人邮件服务器的收信人信箱中&…

使用STM32实现 蓝牙插座

硬件介绍 蓝牙模块HC-01,其实之前就用过,使用起来非常简单 继电器模块, (VCC 3.3V)当左侧IN输入低电平时,右侧的ON 和 COM会导通,左上的绿灯会亮,此处充当插座的角色 项目需求 通过蓝牙的串口发送open打开…

8086变址寄存器和字符串拷贝程序学习

在此文用到了si和di寄存器; 8086汇编语言显示带颜色的字符串程序学习 - 使用emu8086_bcbobo21cn的博客-CSDN博客 下面单独来学习si和di寄存器; SI和DI是8086CPU中和BX功能相近的寄存器; 区别:SI和DI不能够分成两个8位寄存器来使用&#xff…

docker安装的mysql更改全文检索分词配置

这里使用的是mysql8.0,默认使用ngram分词 这里是已经将文件从容器中挂载出来了,没挂载出来要去容器内部更改my.cnf文件并重启mysql容器 步骤 一、查看mysql的分词大小 show variables like %token%;ngram_token_size这里默认是2我已经改为1了 这个值…

本地运行Segment Anything

按原项目GitHub - facebookresearch/segment-anything: The repository provides code for running inference with the SegmentAnything Model (SAM), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.步骤 Ins…

【C++初阶】C++入门——引用

文章目录 一、引用的概念二、共用同一块空间验证三、引用的特性3.1 引用在定义时必须初始化3.2 一个变量可以有多个引用3.3 引用不能改变 四、引用的使用场景4.1 做参数4.2 做返回值 五、传值、传引用效率比较六、常引用6.1 权限放大——不被允许6.2 权限平移6.3 权限缩小6.4 赋…

springboot+mysql财务管理系统

财务管理系统的开发运用java技术、springboot框架,MIS的总体思想,以及Mysql等技术的支持下共同完成了该系统的开发,实现了财务管理的信息化,使员工体验到更优秀的财务管理,管理员管理操作将更加方便,实现目…

Mysql——》数据目录

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

【雕爷学编程】Arduino动手做(138)---64位WS2812点阵屏模块3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

解决IDEA/WebStorm的Ctrl+Shift+F冲突失效

IDEA 的 CtrlShiftF 是全文或全项目搜索搜索快捷键,非常好用。 当这个快捷键偶而会失效时,基本可以确定是快捷键冲突了。 检查所有运行的软件的快捷键,若有设置为CtrlShiftF的则改掉。特别是输入法会占用较多的快捷键。 例如我这里的搜过输…

选择合适的软件,提升工作计划效率

在快节奏的工作环境中,日程安排变得尤为重要。有许多不同的软件可用于帮助管理日程,但哪个软件最适合您的需求?在本文中,我们将介绍几种适合工作安排的软件。 1.Google Calendar Google日历是一种功能强大、易于使用且免费的日历应…