`

笔记--服务器安全和API接口安全性设计

阅读更多

服务器安全

1.弱口令

2.从第三方下载的非正规软件可能存有后门

3.开启防火墙,关闭不需要的端口,一切网络行为都是通过端口进行的,只开放自己需要的端口,或者就是修改一些常用的端口连接

4.DDos攻击较难处理,可以通过增加带宽,负载均衡分流、CDN高仿IP引流->清洗->回注(增值服务)

5.API接口安全性设计:参考:https://www.jianshu.com/p/c6518a8f4040

a.接口调用一律采用https形式

其次,接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用

 

Token授权机制:用户使用用户名密码登录后服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证,如果Token不存在,说明请求无效。Token是客户端访问服务端的凭证。

 

时间戳超时机制:用户每次请求都带上当前时间的时间戳timestamp,服务端接收到timestamp后跟当前时间进行比对,如果时间差大于一定时间(比如5分钟),则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段。

 

签名机制:将 Token 和 时间戳 加上其他请求参数再用MD5或SHA-1算法(可根据情况加点盐)加密,加密后的数据就是本次请求的签名sign,服务端接收到请求后以同样的算法得到签名,并跟当前的签名进行比对,如果不一样,说明参数被更改过,直接返回错误标识。签名机制保证了数据不会被篡改。前端签名要记得使用js混淆

 

拒绝重复调用(非必须):客户端第一次访问时,将签名sign存放到缓存服务器中,超时时间设定为跟时间戳的超时时间一致,二者时间一致可以保证无论在timestamp限定时间内还是外 URL都只能访问一次。如果有人使用同一个URL再次访问,如果发现缓存服务器中已经存在了本次签名,则拒绝服务。如果在缓存中的签名失效的情况下,有人使用同一个URL再次访问,则会被时间戳超时机制拦截。这就是为什么要求签名的超时时间要设定为跟时间戳的超时时间一致。拒绝重复调用机制确保URL被别人截获了也无法使用(如抓取数据)。

 

分享到:
评论

相关推荐

    PHP语言基础学习笔记-php函数大全笔记

    6. **安全性和性能优化**: - **安全性**:防止SQL注入、XSS攻击等。 - **性能优化**:缓存机制、代码优化等。 #### 三、PHP代码基本语法详解 1. **PHP函数知识介绍**: - **phpinfo()**:显示当前PHP配置信息...

    Redis非关系型数据库笔记-数据持久化-主从同步-缓存-笔记-五大数据类型-三大特殊数据类型

    ### Redis非关系型数据库...Redis作为一种高性能的非关系型数据库,不仅支持多种数据类型,还能通过数据持久化和主从同步等机制确保数据的安全性和系统稳定性。通过合理配置和优化,可以在各种业务场景中发挥重要作用。

    Node.js-萌音云笔记-一个高效的在线云笔记专注技术文档在线创作阅读分享和托管

    **安全性** 在线服务必须考虑安全问题,包括数据加密、防止XSS和CSRF攻击、以及授权和权限管理。Node.js中的bcrypt库可以用于密码哈希,helmet库可以增强应用的安全设置,jsonwebtoken则可用于实现令牌认证。 综上...

    SSM笔记-SpringMVC的上传和下载

    在实际开发中,还需要考虑错误处理和安全性。例如,确保上传的文件类型安全,防止路径遍历攻击(用户不能访问服务器上的任意文件),以及控制文件存储空间,防止溢出。 总结来说,SpringMVC提供了丰富的工具和API,...

    j2ee学习笔记-j2ee学习笔记

    它提供了服务器端组件模型、服务和API,支持多种服务,如安全性、事务处理、数据库访问、邮件服务等。本笔记将主要探讨J2EE中的核心概念和技术,包括值对象(Value Object)、JSP(JavaServer Pages)、JavaBean、...

    Python-定位个人笔记和公司内部知识仓库基于djangovue的笔记软件

    6. API接口设计: 为了实现前端与后端的数据通信,项目可能会使用Django REST框架来创建RESTful API接口。这些接口允许Vue.js前端通过HTTP请求获取和更新数据,实现动态加载和实时保存。 7. 安全性与性能优化: ...

    JPA学习笔记-EJB-01JPA初体验

    它可以提供事务管理、安全性和生命周期管理等功能。 - 当EJB与JPA结合时,可以利用EJB的高级特性来增强JPA的应用,例如利用EJB提供的事务边界管理能力,使得持久化操作更加安全可靠。 3. **Hibernate作为JPA的实现...

    我的笔记-qt-c++-c#-后面持续更新.7z

    【标题】"我的笔记-qt-c++-c#-后面持续更新.7z" 提供了几个关键领域:Qt、C++和C#,这些都是计算机编程语言和技术框架。这个压缩包显然包含了作者在这些主题上的学习笔记,可能是教程、代码示例、问题解决方案或者...

    SpringCloud笔记-images

    Zuul作为边缘服务,负责路由转发和安全控制,可以看作是系统的门面。Hystrix则是实现容错管理的重要工具,通过断路器模式防止服务雪崩。Ribbon则用于客户端的负载均衡,根据策略选择服务实例进行请求。Spring Cloud ...

    Node.js-Vesper的API服务器

    - Vesper的API服务器可能与数据库进行交互,存储和检索笔记数据。常见的数据库选择有MongoDB(文档型数据库)、MySQL(关系型数据库)或PostgreSQL。 - **ORM(对象关系映射)**:如Sequelize或Mongoose,可以帮助...

    分布式商城项目笔记-乐优商城

    分布式商城项目笔记-乐优商城,是一个以Java技术为核心的...通过学习乐优商城的项目笔记,不仅可以掌握Java开发技能,还能了解到分布式系统的设计理念和实践技巧,对于提升开发者在电商领域的专业能力具有重要意义。

    笔记24-JAVAEE之Linux和云服务器

    - 通过云服务商提供的控制台或API,可以轻松创建、启动、停止、重启和销毁服务器实例。 - 使用SSH(Secure Shell)进行远程登录和管理,如`ssh user@ip_address`连接到服务器。 3. 安全配置: - 管理SSH密钥对,...

    JAVA学习笔记-良葛格

    J2EE是一个为开发企业级应用提供服务的平台,它包括一系列的标准服务和应用程序接口,用于支持企业级应用的构建,如事务管理、安全性、消息服务等。 J2ME是为嵌入式设备和移动电话等小型设备设计的Java平台,它比...

    java笔记--从菜鸟到j2se j2ee高手之路

    封装是将数据和操作数据的方法打包在一起,以保护数据的安全性。继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码重用。多态则是指同一种行为在不同对象上表现出不同的形式,增强了程序的灵活...

    Java 客户端服务器程序 学习笔记

    7. **安全性**:考虑到网络安全,开发者可能还会介绍如何在Java客户端服务器程序中添加加密和身份验证机制,如SSL/TLS协议和数字证书。 通过阅读这篇学习笔记,你可以掌握Java客户端服务器编程的基本概念和实践技巧...

    接口测试笔记.txt

    - **接口安全性测试**:确保接口不被非法访问或篡改。 6. **测试方法**: - **参数测试**:详细测试接口的输入参数和输出结果。 - **场景测试**:模拟实际业务场景进行测试。 #### 二、接口测试的具体流程 1. ...

    EJB笔记--介绍了EJB的用处以及编程方法

    - **开发人员只关注业务逻辑**:EJB容器负责处理诸如事务管理、安全性和持久性等非功能性需求,使开发人员能够专注于核心业务逻辑。 - **组件的可移植性**:EJB遵循标准,因此可以在不同的服务器之间轻松移植。 - **...

    loadrunner学习笔记-刘亚平1

    【LoadRunner 学习笔记-刘亚平1】 在LoadRunner性能测试中,选择合适的录制类型至关重要。在处理不同类型的Web应用程序时,我们通常需要根据应用程序的特性来选择HTML-based script还是URL-based script。 1. **...

    SSM笔记-SpringMVC REST风格、基本标签初识

    - 分层系统:允许中间层如代理、网关和缓存来增强系统的性能和安全。 2. **SpringMVC中的REST支持** - `@RequestMapping`:用于映射HTTP请求到控制器方法,可以设置URL、HTTP方法等。 - `@GetMapping`、`@...

    12.API接口测试.zip

    4. 安全性:接口测试有助于检测潜在的安全漏洞,如未经授权的数据访问。 二、API接口测试的基础概念 1. RESTful API:一种常见的API设计规范,基于HTTP协议,通过URI(Uniform Resource Identifier)定位资源,使用...

Global site tag (gtag.js) - Google Analytics