以权限系统为例:
文档内容如下:
权限系统设计方案汇总1、概述该文档主要阐述权限系统设计方案 2、目的1)总结系统运用到的技术方案; 2)用于指导该系统后台人员开发工作。 3、系统设计3.1 架构设计系统业务不复杂,主要是CRUD(增删改查)操作,所以采用单体架构,就能满足当前系统需求。 系统技术架构图,如下:
3.2 框架选择采用现今最流行、最成熟的springboot框架,springboot框架的优势在于现今市场上拥有较多的最佳实战案例,架构稳定,团队成员均对该框架比较熟悉,无需增加额外的学习成本,而且开发效率高。 3.3 负载均衡通过Nginx+keepalive实现负载的高可用、可扩展、可伸缩。 3.4 token采用jwt框架,进行token生成、分发、检验。 3.5 请求方式http/https+post 3.6 数据库设计除了基础表(用户表、角色表、权限表、角色权限表),另设计多一张表——操作记录表,操作记录表记录用户对系统的操作行为,达到跟踪、定位异常操作行为的目的。 3.7 安全监控当前系统设计了操作记录表,记录用户的操作行为,后期可以使用ELK(ElasticSearch、Logstash 和 Kibana)框架,通过分析、统计日志监控用户的操作行为,达到双重监控,稳如狗。 4、安全设计4.1 ip白名单系统对接入端报备ip,作为接入端部署服务器身份认证。 4.2 防篡改使用HMACSHA1签名算法,对请求数据作签名检验,达到数据防篡改的目的。 4.3 防幂等请求去除请求参数requestTime,对请求参数重新生成签名,并设计一定的搁值缓存到redis,每次请求查看redis该签名是否存在,若不存在,持续跑下面的业务流程,若存在,不在走下面的流程,直接返回已经缓存的response。 4.4 防重复请求略 (同防幂等请求一样的实现方式) 4.5 身份认证系统对每次请求都返回token值,接入端下次请求需带上该token,作为接入端和系统当前会话身份认证,还作为当前会话的时效性认证。 4.6 防枚举攻击本系统中,常见的枚举攻击情况有两种: 1)、固定账号,枚举密码攻击; 2)、固定密码,枚举账号攻击。 系统使用redis记录登录失败时账号或密码的使用次数,当账号或密码的使用次数达到设定的搁值,系统将冻结该账号或密码1小时(该值可配置)。 4.7 防SQL注入由于SQL注入攻击只能对编译过程起作用,系统引入MyBatis持久层框架,通过MyBatis预编译功能,自动实现防止SQL注入。 4.8 XSS过滤用户在做增、改操作时,对请求参数进行XSS过滤,防止系统受到XSS攻击。 5、监控运维6、上线方案 |