系统方案汇总文档

以权限系统为例:

 

文档内容如下:

                                   权限系统设计方案汇总

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、上线方案

posted @ 2020-01-17 10:56  java懒洋洋  阅读(527)  评论(0编辑  收藏  举报