你的api加锁了吗?

简介:

职责单一化,各司其职,后端只负责Api接口编写提供给各种不同类型的客户端去调用,但是客户端和服务器端调用是要有权限限制的,不能任何一个客户端都可以随便调用我们的接口(这里面的缘由相信大家都知道吧,当然我就默认你们都知道),再者我们都知道http是明文传输,被抓包可可以修改相应参数,当然如果你使用了https就相对安全了不少!


  举一个很简单的栗子,微信的接口大家都调用过吧,当然肯定有没调用过的,没关系,没有调用过的人也是能明白我接下来要讲的事情:微信会有一个sign的签名,就是思梦php上面所说的权限认证机制了

  下面思梦php给大家讲的只是其中的原理,我们可以根据所讲知识继续扩展,完善成为你自己的一套程序。

  主要使用的工具:thinkphp5/PHP

  (1)首先客户端和提供服务的服务器加密方式要一致AES、MD5都可以

  (2)规定好参数

  下面的程序是规定了三个参数:version(api的版本)、time(请求时间)、sign(加密好的签名)

  当然这些参数我们可以根据你的实际代码业务而定,不一定设置一样,本次程序的参数是设置在header头里面进行传输,为了和body里面的业务参数区分开来,当然这里也可以不一致,根据你的业务而定

  注意点:客户端和服务端时间不一致的问题,我们要在服务器提供一个时间的方法来验证时间的有效性


  接下来就是我们在一个入口文件里面去定义一个验证的方法,保证我们接口的安全性



  以上就是代码的示例:

  (1)首先定义了一个BaseController

  (2)定义一个构造方法,触发验证机制

  (3)在验证方法里面获取header信息,进行加密验证,如果第一次方法将该sign作为键值缓存起来并设置有效期,保证请求的唯一性

  (4)之后判断限制请求的时间,如果超时将抛弃此次请求

  当然这是在http上面做的一些操作,如果使用了https已经相对安全多了!

  以上只是一个抛砖引玉,小伙伴可以自己再去完善

目录
相关文章
|
6月前
|
安全 Java API
Java 8中的Stream API:简介与实用指南深入理解Java并发编程:线程安全与锁优化
【5月更文挑战第29天】本文旨在介绍Java 8中引入的Stream API,这是一种用于处理集合的新方法。我们将探讨Stream API的基本概念,以及如何使用它来简化集合操作,提高代码的可读性和效率。 【5月更文挑战第29天】 在Java并发编程中,线程安全和性能优化是两个核心议题。本文将深入探讨如何通过不同的锁机制和同步策略来保证多线程环境下的数据一致性,同时避免常见的并发问题如死锁和竞态条件。文章还将介绍现代Java虚拟机(JVM)针对锁的优化技术,包括锁粗化、锁消除以及轻量级锁等概念,并指导开发者如何合理选择和使用这些技术以提升应用的性能。
|
6月前
|
Linux API C++
【Linux C/C++ 线程同步 】Linux API 读写锁的编程使用
【Linux C/C++ 线程同步 】Linux API 读写锁的编程使用
57 1
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(五)
⑦. 线程同步 ①. 买票案例出现的两个问题 ②. 同步代码块synchronized ③. 同步方法
116 0
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(五)
|
Java API 调度
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(三)
④. 线程池 ③. 设置和获取线程名称 ④. 线程优先级(setPriority)
121 0
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(三)
|
Java API
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(一)
①. 多线程的概述(面试高频问点) ②. 多线程的实现方式 ①. 继承Thread ②. 实现Runnable接口
118 0
Juc01_多线程概述、四种实现方式、常用方法API、生命周期、买票案例、synchronized锁(一)
|
安全 Java 关系型数据库
你的Swagger2 API直接公开?来加把锁!
你的Swagger2 API直接公开?来加把锁!
479 0
你的Swagger2 API直接公开?来加把锁!
|
8天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。
|
9天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应