• 单元测试

1.1单元测试定义

单元测试是对软件组成单元进行的测试,其目的是检验基本单元的正确性。单元测试对象是软件设计的最小单元称为模块,所以又叫模块测试。

整个测试阶段分为单元测试、集成测试、系统测试三步骤,其范围从小到大。

1.2单元测试的原则

原则一:AIR原则

本原则是指可重复性(Repeatable)、独立性(Independent)、自动化(Automatic)

原则二:BCDE原则

指测试满足B(Border)边界测试;

C:Correct正确的输入,得到预期的结果;

D:Design与设计文档相结合

E:Error证明程序有错

边界值测试

需要先定义边界点和边界值,其中在边界上的称为上点,在区域范围之内的为内点;在边界之外的为离点。

1.3常用的单元测试框架

maven构建单元测试

maven使用插件来实现单元测试执行,可以配置对应执行哪些,不执行哪些。

并且Jacoco插件可以统计代码测试覆盖率统计。

  • 系统安全规约

2.1权限控制

越权访问漏洞

越权访问(Broken Access Control,简称BAC),是web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为web应用十大安全隐患的第二名。

根据越权的方向可分为垂直越权和水平越权。

越权访问漏洞防范措施

包括有1.前后端同时对用户输入信息进行校验,双重校验机制

调用功能前,验证用户是否有权限调用相关功能

水平越权是一种“基于数据的访问控制”设计缺陷引起的漏洞。

由于服务器端收到请求数据进行操作时,没有判定的数据的所属人/部门而导致的水平越权。

所以需要对比较敏感数据进行数据操作范围进行控制。

使用一个数据拦截器DataScopeInterceptor

定义一个DataScope 来设置控制数据控制范围的字段信息。通过拦截原始sql,在基础上包装为新的sql来执行,这样来防止水平越权。

2.2敏感数据处理规约

敏感信息处理

敏感信息脱敏

脱敏的重要原则

脱敏时需要保持原有数据特征、保持数据之间的一致性、保持业务规则的关联性、多次脱敏之间的数据一致性。

敏感数据脱敏之日志脱敏

日志进行脱敏时使用指定日志转换器,配置在logback-spring.xml

在转换器内定义转换规则,包括匹配规则,转换规则定义。

敏感数据存储与获取加密

一种处理方案是:存储的时候可以在mybatis中的paramterHandle以及ResultHandler处理器中增加拦截器处理。

另外一种方案是在JDBC的ResultSet对象进行拦截器进行加密、解密来实现数据脱

敏。

实现案例:

基于sql的加密拦截器

获取到数据字段时进行匹配是否为敏感字段,如果是进行加密处理

SQL注入攻击

SQl注入攻击是通过sql命令插入到web表单提交或者输入域名或者页面请求的查询字符串,最终达到欺骗服务器。

mybatis框架sql注入

在使用$时可能会被注入攻击,必须使用#防止

在in之后的参数不管使用$还是#都可能存在,必须使用分离

XSS跨站点脚本攻击

XSS跨站脚本攻击()发生在客户端,可被用户进行隐私,钓鱼欺骗,偷取密码,传播恶意代码等行为。

后端应用防备XSS攻击

编写过滤器来防止攻击,对请求参数、json进行过滤处理,这样防止XSS攻击。

重放攻击案例:短信服务接口未做防重功能,造成用户持续手段短信。

防重处理:可以增加时间戳节点、一次性编码,可以将相关的参数进行hash编码后进行防止重复。

比较稳妥的办法是:增加时间戳+hash一次性有效性来防止重复

使用Sentinel实现API接口防止刷

包括使用限流、熔断等来防止

熔断

关键资源防刷流程

判定是否为关键资源

获取风控等级,高等级时进行提升验证码进行风控防刷处理。

孤尽T31之单元测试与系统安全规约相关推荐

  1. 2021.11.16 孤尽训练营D22——单元测试与系统安全规约

    认识单元测试 单元测试是对软件组成单元进行的测试.其目的时检验软件基本组成单位的正确性.测试对象时软件设计的最小单元:模块,又称为模块测试. 单元测试的AIR原则 A:自动化地关闭.开启单元测试 I: ...

  2. 孤尽班第22天 -- 系统安全规约

    权限控制 越权访问漏洞 越权访问(Broken Access Control, 简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广.危害大,被OWASP列为Web应用十大安全隐患的第二名. ...

  3. 孤尽T31项目第6天-Java项目工程结构规约

    文章目录 前言 一.应用分层 1. 分层的目的 2. MVC框架模式 3. 推荐的分层结构 4. 分层的异常处理 5. 分层数据模型 二.Maven管理 1. Maven的作用 2. 构建 3. Ma ...

  4. 孤尽T31项目Day26

    孤尽T31项目Day26 系统健壮性设计 1 代码评审 什么样的是烂代码(人的视角) 维护者脏话的频率高 维护者脏话的类型丰富 存在打架斗殴的可能性 面向离职编程 什么是烂代码(代码视角) 不遵守代码 ...

  5. 孤尽T31项目Day3

    孤尽T31项目Day3 Mysql设计规范 1 建表规约 1.1 表.字段的命名 1.必须使用小写字母或数字. 2.禁止出现数字开头. 3.禁止两个下划线中间只出现数字. 4.不使用复数名词. 5.禁 ...

  6. 写在孤尽T31训练营开班第一天

    在报这个班的时候,其实心里没底,我到底有没有时间完成这项挑战?但人都说,时间是挤出来的.所以,我想再使劲挤一挤. 在这里,我想立几个flag,等训练营结束的时候,看看自己完成了几个. 1. 提升系统架 ...

  7. 孤尽T31之技术选型

    技术选型 技术选型是一件很重要的事情.技术选型的原因 降低开发成本 提高开发效率 编程语言排行 今天9月份推出的jdk17版本了. 2.微服务架构产生 架构的历史包括如下几个时代 第一代单体应用 把所 ...

  8. 孤尽T31之集合与并发编程

    T31系统功能 功能梳理 用例图关注:关注角色.角色功能,将需求再次结构化. 功能树:关注功能模块,哪些模块干什么,功能树是对用例图再次重新聚合. 例如T31的功能树如下 作业,部署图关注部署的关联元 ...

  9. 工程开发之系统安全规约

    一.权限控制 权限控制必须要提的是越权访问,越权访问是Web应用程序中一种常见的漏洞. 越权访问漏洞:分为垂直越权访问.水平越权访问 水平越权访问是一种"基于数据的访问控制"设计缺 ...

最新文章

  1. CSS3重新定义input中呆若木鸡的默认复选框CheckBox和单选框Radio样式
  2. 拼手速抢红包!送大家现金红包!
  3. PingCode 全新子产品Access (目录服务)正式发布!
  4. node.js的request模块
  5. VC ActiveX 控件 开发总结
  6. (~解题报告~)L1-019 谁先倒 (15分) ——17行代码AC
  7. 基本卷-动态卷性能测评(未完待续)
  8. js设计模式——3.观察者模式
  9. mmu计算机组成原理,计算机组成原理
  10. 低姿态生活,高境界做人
  11. Delphi常用字符串函数
  12. 面试官问:请拿出一段体现你水平的代码时,该如何回答?
  13. 算法:插入排序、归并排序、快速排序、堆排序
  14. 至少出现k次重复的子串的最大长度
  15. c++\MFC测试代码的运行时间
  16. MAPGIS与ARCVIEW之间的文件转换技巧。(转载自当当吧网络驿站)
  17. 在财务中python能做什么_Python在财务会计工作中的应用【举例】
  18. 自动补全 (自定义)拼音分词器 搜索时注意事项
  19. 随机变量分布函数:相关习题解答
  20. win10电池图标不能调亮度_Win10屏幕亮度不能调节,调节无效怎么办

热门文章

  1. 在python中股票的收盘价如何表示_利用python计算股票涨跌幅
  2. Spring5(从头到尾)笔记总结
  3. php bcmath 5.3.3 47,解决PHP Fatal error: Call to undefined function bcmul()
  4. 从tf1到tf2的几个函数转换
  5. 错误信息:没有为会计年度0定义版本2018.
  6. 视频号7天销售额超百万
  7. ApacheCN 翻译活动进度公告 2019.3.3 1
  8. 医学图像常用特征选择方法
  9. 使用mkldnn为cpu运行网络加速
  10. 原码、反码、补码的计算和转化