孤尽班第22天 -- 系统安全规约
权限控制
越权访问漏洞
越权访问(Broken Access Control, 简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
越权访问漏铜防范措施
1. 前后端同时对用户输入信息进行校验,双重验证机制
2. 调用功能前,验证用户是否有权限调用相关功能
3. 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
4. 直接对象引用的资源ID要加密,防止攻击者枚举ID,敏感数据特殊化处理
5. 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
水平越权访问漏洞
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时,没有判断数据的所有人/所属部门而导致的越权数据访问漏洞。
(小声bb)在执行select语句时,如果是用户A访问数据,那么只返回在table中A可以看到的行。怎么确定哪些行A可以看到呢?这个视具体业务逻辑来定。比如,可以存储行的所有者,如果所有者是A,或者包括A,那么A就可以访问。也可以存储行的访问级别,然后和A的访问级别进行比较,如果A的级别更高或平等,就可以访问。
敏感数据处理规约
敏感数据处理
- 特殊信息授权
- 特殊信息脱敏(身份证号,手机号,卡号,客户)
- 特殊信息加密存取
- 特殊信息加密传输
数据脱敏的重要原则
- 保持原有数据特征(原来多少位,脱敏了还得是多少位)
- 保持数据之间的一致性(不能有的地方脱敏前三位,有的地方脱敏后三位)
- 保持业务规则的关联性
- 多次脱敏之间的数据一致性(不能不同场合脱敏同一个数据,结果却不一样)
脱敏方式:前端展示脱敏;日志脱敏。
加密方式:通过MyBatis的ParameterHandler和ResultHanler进行加密解密;通过Spring的Filter添加加解密的Filter。
SQL注入攻击防御
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。动态生成SQL语句时没有对用户输入的数据进行验证是SQL注入攻击得逞的主要原因。
SQL注入常用防御手段:
- 过滤危险字符
- 使用预编译语句:JDBC PreparedStatement
- 参数化查询:Hibernate、Mybatis
Mybatis框架SQL注入漏洞场景
- 使用$直接拼接
- 模糊查询like后的参数
- in之后的参数
- order by之后
credit:截图均来自Joel老师的PPT
孤尽班第22天 -- 系统安全规约相关推荐
- 2021.11.16 孤尽训练营D22——单元测试与系统安全规约
认识单元测试 单元测试是对软件组成单元进行的测试.其目的时检验软件基本组成单位的正确性.测试对象时软件设计的最小单元:模块,又称为模块测试. 单元测试的AIR原则 A:自动化地关闭.开启单元测试 I: ...
- 孤尽T31之单元测试与系统安全规约
单元测试 1.1单元测试定义 单元测试是对软件组成单元进行的测试,其目的是检验基本单元的正确性.单元测试对象是软件设计的最小单元称为模块,所以又叫模块测试. 整个测试阶段分为单元测试.集成测试.系统测 ...
- 《孤尽班T31-01-架构理论笔记》
孤尽,阿里巴巴技术大拿,开课吧CTO 当初得知孤尽大大会组建一个"Java学习班"的 时候,就期待能够加入其中,学一些"够牛B"的技术,从最开始的差不多600人 ...
- 《孤尽班T31-05-技术架构选型笔记》
<孤尽班T31-05-技术架构选型笔记> T31项目 文章目录 <孤尽班T31-05-技术架构选型笔记> 1. 关于技术选型 1.1 为什么要啊进行技术选型? 1.2 微服务架 ...
- ASP.NET典型三层架构企业级医药行业ERP系统实战(8大模块22个子系统)
课程学习地址:http://***/goods.php?id=180 课程说明: 国内首部完整讲述ERP系统架构.业务逻辑.开发的项目实战课程.考虑到本系统的庞大及复杂性.本课程购买学员每人赠送一个U ...
- ubuntu 22.04 系统下载
简介:本次小编需要安装的版本是 [ ubuntu-22.04.1-desktop-amd64.iso ] 由于在官网中下载速度过慢,这里选择在 清华大学开源网站镜像站下载 网址:清华大学开源软件镜像站 ...
- 【记录】在win10系统上安装ubuntu(乌班图)双系统
在win10系统上安装Ubuntu(乌班图)双系统 先说一下Ubuntu系统的优势: ubuntu就是为个人用户打造的系统 桌面特效很炫 运行计算很快 没病毒(linux下的病毒个人电脑是碰不到的) ...
- 华恩JAVA班第22天
华恩JAVA班第22天 package com.zjj; public abstract class Shape { private String name; public Shape(Str ...
- 新高考3+3模式(6选3)全走班自动排课系统7.0(正式版)
一.软件使用方法与步骤 1.使用软件根据学生选课人数与分班成绩进行智能自动分班 (1)整理学生选课信息与分班成绩将其导入到<A组分班>或<B组分班>工作表中 走班制上课时 ...
最新文章
- zabbix4.0构建实录
- Android 更新项目名称
- 加载静态文件,父模板的继承和扩展(2017.11.3)
- 中判断字符串是否为空_leetcode1704_go_判断字符串的两半是否相似
- Linux 实例常用内核网络参数介绍与常见问题处理
- (JAVA)线程之lock和死锁(例)
- 修改GDAL库支持IRSP6数据
- 批量替换文件字体,简体-繁体
- matlab 地址中有变量,在matlab中符号变量
- css防爆电机,防爆马达
- My Sixty-Second Page - 斐波那契数列 - By Nicolas
- 如何推广自己的新网站
- git core.autocrlf配置说明
- 手动删除oracle数据库
- 《东周列国志》第七十四回 囊瓦惧谤诛无极 要离贪名刺庆忌
- python如何实现接口?
- 华为云虚拟服务器,云服务器是虚拟主机
- Mil代码编程的基本概述
- 运行JS脚本的几种方式
- 无能狂怒之@RequestParam、@PathParam、@PathVariable三者有什么区别我都不知道!