4.请求安全-- 结合使用的安全优势总结
时间:2022-04-29
本文章向大家介绍4.请求安全-- 结合使用的安全优势总结,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#结合使用的安全优势与总结# ##前言## 写到这里基本上笔者在请求中遇到的问题,以及运用到实践中的解决方案,基本上分为,请求唯一性,单设备登录,单点登录,MD5校验 这几种校验的小技巧,在之前都对着几种校验方式进行也一些独立的说明(还没有看过的可以先去游览查阅一下,在请求安全模块中) 在本章里面会着重说明怎么样综合使用,如何获得比较高的安全性,以及会简单介绍一下方便使用的一种高级加密方法. ##1.回顾## ###1.1 单设备登录.单点登录###
每次调用登录接口获取的ID都是一个临时ID.当下次登录的时候重新生成在覆盖,就可以达到单设备登录的
效果了,这个临时ID对应着真正的用户ID每次客户端请求都是拿着临时ID请求过来然后服务器做验证,而且
这个临时ID和真正ID是存储在一个共享的区域,其他的模块都能获取到这一项对应
###1.2 MD5校验###
MD5在请求安全中关键用到的基本上就是对于请求参数进行校验,对与服务器来言排除系统问题最大的问题
就是害怕请求被拦截,拦截修改之后就有很多漏洞的可能性了, 为了避免被拦截,参数被修改这种文件的常
用方法就是对请求参数进行校验,就算拦截了请求参数修改了只要模拟不出MD5加密出来的值,在服务器过滤
器直接就会进行拦截. 我这边推荐的请求校验方法在传递参数的时候带上 MD5值 随机数 时间戳 当然这几
个都是由客户端生成 MD5=MD5(随机数+时间戳+MD5(KEY+公司名+项目名)) 当然这个规则也是可以定制的
请求参数在服务器拦截器就用客户端传递过来的 随机数 时间戳 来做校验如果不通过就不让继续访问
###1.3 请求的唯一性###
如果别人不破解MD5直接解析Ddos攻击当然要有个拦截机制,请求唯一性是对于一个用户ID这个都是用户的唯
一标示在这个简单的解决方案中有两个比较重要的东西,随机数,时间戳,通过这两个东西加上用户唯一标示就
能实现一套简单的请求唯一性验证
##2. 密文加密-STD3Des##
STD3Des加密是一种高级可逆加密方法,他需要加解密双方指定两个东西一个是key,一个是vi(vi是偏移量)
密文加密意义在于别人捕获请求不会看到传递参数的具体值
##3. 结合增加安全性##
1.因为有单设备登录ID是动态的,所以吧ID作为MD5的条件加密会更安全
2.MD5的随机数和时间戳与唯一请求的使用的相同,应为有MD5加密,所以模拟随机数和时间戳需要先破解MD5校验
3.密文加密可以保证所有参数都是密文,进一步增加随机数和时间戳被修改问题
##4. 性能##
很多人会在乎接口加了这么多东西性能会降低多少呢 ,我经过实践下来其中性能消耗最大的是加解密,损耗在3%~8%
请求量越大损耗越大其他加起来基本保持在1%左右,基本上也是可以接受的,而且结合起来安全性还是相对比较高的
##5.总结##
通过以上所述各项小技巧的组合确实可以得到不错的安全性,基本上关于请求安全就告一段落了,笔者水平有限希望
大家多提意见,多交流!
- 用Raspberry Pi Zero打造「即插即用」的Web服务器
- Spring Cloud(七)服务网关 Zuul Filter 使用
- 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
- Spring Cloud(六)服务网关 zuul 快速入门
- Docker Registry Server 搭建,配置免费HTTPS证书,及拥有权限认证、TLS 的私有仓库
- Ubuntu 17.04 编译安装 Nginx 1.9.9 配置 https 免费证书
- 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用
- Docker Image 解决镜像无法删除的问题
- Docker Hub 仓库使用,及搭建 Docker Registry
- 基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用
- Docker 容器操作
- Ubuntu 17.04 x64 安装 Docker CE 初窥 Dockerfile 部署 Nginx
- 基于Metronic的Bootstrap开发框架经验总结(4)--Bootstrap图标的提取和利用
- WebView 的 input 上传照片的兼容问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 为了不让代码看起来像一坨* 我在工作中反复用了这个
- 在 Go 语言中 Patch 非导出函数
- SpringCloud 配置中心服务端配置解析流程分析
- Qt多线程编程之线程池
- PWN:Tcache Attack原理
- [Go]GO语言实战-GO-FLY在线客服cobra库命令行参数解析
- [Go]GO语言实战-GO-FLY在线客服gorm导入sql文件
- Day7.数据类型-集合
- 详解一条查询select语句和更新update语句的执行流程
- JSP 开发环境搭建与项目运行(二)
- Activity启动时生命周期汇总
- 「程序员」Flutter:从网络获取数据遇到的坑
- 程序员:拿到新电脑如何配置Git环境
- What?数据量巨大还不分库分表?JDBC 入门与项目实战
- 简书:如何去掉图片下面烦人的“图片发自简书App”