当前位置: 首页 > news >正文

安全测试国家标准解读——并发程序安全

本系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理,大家感兴趣的话可以自己去下载下来学习一下,里面有一些最佳实践是比较好的。 

本标准从程序安全和环境安全两个方面提出了提升应用安全性的编程最佳实践。其中,程序安全部分描述软件在资源使用、代码实现、安全功能方面的安全性规范,环境安全部分描述软件的安全管理配置规范。前面的文章为大家讲解了程序安全,本文我们针对代码安全的并发程序安全部分进行解读。

【并发程序安全】


这一块是程序中经常出现的一些问题,我们在功能测试、性能测试中经常会遇到的一些问题。

1.确保共享数据的线程安全:


(1)确保所有的全局变量、线程间的共享可变数据是线程安全的。
(2)对所有需确保线程安全的数据通过同步方法或代码块进行保护。


2.确保共享变量、数据的可见性:


(1)对共享变量、数据的读或写操作均使用同步访问。
(2)所有执行读或写操作的线程都应在同一个锁上同步,以确保所有线程都能看到共享变量或数据的最新值。

比如一些订单的操作,在读和写的时候要上同一个锁,保证是一致的。一方读的时候对方正在写,导致读的是之前的信息,这样这个订单就容易产生一些交易上的问题。


3.需确保能够终止处于阻塞状态的任务和线程。


有些任务和线程处在阻塞状态我们可以及时阻止,我们要能够预见到什么程度下会出现阻塞,在程序上做一个防护,使其能够及时终止。


4.仅在循环体中执行线程的挂起操作,并在每次挂起线程之前检查线程继续执行要满足的条件。


5.不要在条件变量同步等待操作中使用多余一个互斥条件。


这部分并发程序安全在标准中也给出了最佳实践,大家也可以去看一看。给大家举一个例子,有一个类,SimpleDateFormat(时间格式化),这个类就是线程不安全的,现在已经不建议使用了,在我们代码审计的过程中,这个类出现的频率还很高,很多单位和项目都还在用这个类。这个类是线程不安全的,如果你非要用的话,就必须是局部变量的使用,这样性能会比较差。

在java8中有一个替代它的的类,DateTimeFormatter这个是线程安全的,可以替代SimpleDateFormat。我们在做项目的时候一定要用最新的、安全的一些类、方法和框架。

后面的文章会继续对《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》的其他部分进行解读,欢迎继续关注。

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

http://www.lryc.cn/news/102773.html

相关文章:

  • 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(12)-Fiddler设置IOS手机抓包,你知多少???
  • MySQL中锁的简介——行级锁
  • 4 个最常见的自动化测试挑战及应对措施
  • 23款奔驰GLE450豪华型升级AMG直瀑式中网,战斗感立马提升了一个档次
  • ALLEGRO之Logic
  • 算法leetcode|64. 最小路径和(rust重拳出击)
  • css---实现文本超过两行时显示省略号(...)的效果
  • 30-使用RocketMQ做削峰处理
  • 如何用非root账号安装k8s集群
  • windows环境安装elasticsearch+kibana并完成JAVA客户端查询
  • 高精度算法
  • DragGAN:用崭新的方式进行图像处理
  • 语音播放 linux
  • 各大互联网公司面经分享:Java 全栈知识 +1500 道大厂面试真题
  • 【LeetCode】剑指offer礼物的最大价值
  • 应用层协议——https
  • Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)
  • 智慧城市环境污染数据采集远程监控方案4G工业路由器应用
  • 大数据技术之Clickhouse---入门篇---安装
  • vue3搭建Arco design UI框架
  • 提升数据质量的四大有效方式
  • ALLEGRO之FlowPlan
  • Python - OpenCV实现摄像头人脸识别(亲测版)
  • date日期相关操作汇总
  • 生产者-消费者模式
  • Jetson Nano之ROS入门 -- YOLO目标检测与定位
  • 【移动机器人运动规划】01 —— 常见地图基础 |图搜索基础
  • mongotop跟踪Mongodb集合读取和写入数据
  • Linux中使用du命令来查看目录的大小
  • 【Linux】进程篇Ⅰ:进程信息、进程状态、环境变量、进程地址空间