ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)

简介: ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)

前言

“已阅即焚” 是一种通信方式,它指的是一旦消息被对方阅读后,消息内容会被自动删除或销毁,不再留下任何痕迹。这种方式通常用于提高信息的安全性和隐私保护。


在传统的通信应用中,已阅即焚的功能可以通过以下几种方式实现:


1.自动删除:消息在对方阅读后,会自动从聊天记录中删除,双方都无法再查看。

2.自动销毁:消息在对方阅读后,会自动在设定的时间段后销毁,确保消息不会长时间存在。

3.消息截屏提醒:当对方截屏阅读消息时,会给发送方发送通知,避免对方暗中保存消息。


Ajax标准用法

在 jQuery 中,使用 $.ajax() 方法来发起 AJAX 请求是一种常见的标准用法。以下是 $.ajax() 的基本使用方法:

$.ajax({
  url: '请求的URL',
  method: '请求的方法', // 默认为 'GET'
  data: 请求的数据, // 可选
  dataType: '预期的响应数据类型', // 可选
  success: function(response) {
    // 请求成功时的回调函数
    // 可以在这里处理响应数据
  },
  error: function(xhr, status, error) {
    // 请求失败时的回调函数
    // 可以在这里处理错误信息
  }
});


其中,关键配置项包括:


url:请求的URL地址。

method:请求的方法,可以是 'GET'、'POST'、'PUT'、'DELETE' 等,默认为 'GET'。

data:请求的数据,可以是一个对象、字符串或者数组。根据请求的需要进行设置。

dataType:预期的响应数据类型,常见的有 'json'、'text'、'html' 等,默认为智能判断。

success:请求成功时的回调函数,在服务器返回成功响应时被调用。响应数据作为参数传递给回调函数。

error:请求失败时的回调函数,在请求出现错误时被调用。错误信息作为参数传递给回调函数。

通过配置这些选项,可以定义请求的目标URL、请求方法、发送的数据,并在请求成功或失败时执行相应的处理逻辑。


以下是一个简单的示例:

$.ajax({
  url: 'https://api.example.com/data',
  method: 'GET',
  success: function(response) {
    console.log('请求成功', response);
  },
  error: function(xhr, status, error) {
    console.log('请求失败', error);
  }
});


该示例将发送一个 GET 请求到 'https://api.example.com/data',并在控制台打印成功或失败的信息。以上只是 $.ajax() 方法的简单用法,根据实际需求,还可以配置其他选项,如请求头、超时设置等。可以参考 jQuery 的官方文档以获取更详细的信息和更复杂的用法。


项目需求

API访问验证方式有多种,本次案例想实现简单的动态url参数功能,即:每次访客访问的URL不同,但是能访问到同一资源,同时避免的功能。

1.url访问加密

AuthCode封装函数是Discuz的经典函数,采用改函数:

  1. 对传递的ID进行前端加密,访客无法正常破解;
  2. 动态加密,每刷新页面,密文自动变化;
  3. 设置$expiry:密文有效期,如3秒


    var id = "<?php echo AuthCode('1', 'ENCODE', 'ILOVEYOU', 3)?>";
    $("#pid").html(id);
    $(function () {
        $.ajax({
            type: 'get',
            url: "api.php?id=" + id,
            data: {},
            dataType: "json",
            success: function (res) {
                console.log(res);
            },
            error: function (err) {
                console.log(err)
            }
        });
    })

2.后端API解密

密文过期后,将无法再次解密。因此,在该处进行错误抛回异常提示即可。

require_once "common.php";
$id = $_GET['id'];
$pid = AuthCode($id, 'DECODE', 'LOCKDATAV', 0);
$res['data']['id'] = $id;
if ($pid == "") {
    $res['data']['msg'] = 'ID已过期,无法正常读取数据,请刷新页面。';
} else {
    $res['data']['pid'] = $pid;
    $res['data']['msg'] = "OK";
}
die(json_encode($res));


API访问验证方式

API 访问验证是确保只有经过授权的用户或应用程序可以访问 API 的重要安全机制之一。以下是一些常见的 API 访问验证方式:

  1. API 密钥(API Key):为每个用户或应用程序分配唯一的 API 密钥,用于验证其身份和权限。API 密钥通常作为请求的参数或在请求头中发送。
  2. OAuth(开放授权):Oauth 是一种授权框架,用于验证第三方应用程序以代表用户访问受保护的资源。在 OAuth 流程中,使用授权令牌(Access Token)来访问和保护 API 资源。
  3. JSON Web Token(JWT):JWT 是一种安全的令牌,用于在用户和服务之间进行身份验证和授权。它包含了对用户进行身份验证的声明和权限信息,以及签名来验证其完整性。
  4. HTTP 基本认证:HTTP 基本认证通过在请求头中发送 Base64 编码的用户名和密码来验证用户的身份。虽然这是一种简单的认证方式,但它不具备很强的安全性,因为请求头在传输过程中可能会被窃听到。
  5. HMAC(哈希消息认证码):HMAC 是一种用密钥对消息进行签名的方法。在 API 请求中,使用密钥生成一个哈希值,并将其发送到服务器进行身份验证。
  6. IP 地址白名单:限制 API 访问的 IP 地址,只允许特定 IP 地址通过验证。这种方式适用于只允许特定客户端或服务器访问 API 的情况。

综合使用上述的验证方式可以增强 API 的安全性。通常,API 的验证方式应根据具体的需求和安全要求来选择和实现。


加解密相关

  1. php动态密码和加密解密函数的使用(动态密码、Discuz核心函数AuthCode、任意输入密码验证)
  2. php传递url参数加密验证的解决方案(加密解密、安全验证过滤)

@漏刻有时

相关文章
|
1月前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
3月前
|
JSON 应用服务中间件 API
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
98 1
|
1天前
|
JSON 自然语言处理 Dart
私有化部署 Llama3 大模型, 支持 API 访问
通过 ollama 本地运行 Llama3 大模型其实对我们开发来说很有意义,你可以私有化放服务上了。 然后通过 api 访问,来处理我们的业务,比如翻译多语言、总结文章、提取关键字等等。 你也可以安装 enchanted 客户端去直接访问这个服务 api 使用。
私有化部署 Llama3 大模型, 支持 API 访问
|
8天前
|
XML JSON API
快速淘宝商品详情页面API接口传输 php
PI(Application Programming Interface,应用程序接口)是一组预定义的函数、协议和工具,用于构建软件应用程序之间的交互。它允许不同的软件系统和应用通过统一的接口进行数据交换和通信
|
9天前
|
安全 Java API
java借助代理ip,解决访问api频繁导致ip被禁的问题
java借助代理ip,解决访问api频繁导致ip被禁的问题
|
11天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 02 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
1月前
|
存储 分布式计算 API
adb spark的lakehouse api访问内表数据,还支持算子下推吗
【2月更文挑战第21天】adb spark的lakehouse api访问内表数据,还支持算子下推吗
107 2
|
1月前
|
Java API PHP
多多关键字API php java Python
多多关键字API接口广泛应用于商家进行市场分析、竞品分析、关键词优化等场景。商家可以通过分析关键词数据,了解用户需求,制定针对性的营销策略,提高产品的曝光率和转化率。
|
1月前
|
数据采集 JavaScript API
第三方系统访问微搭低代码的后端API
第三方系统访问微搭低代码的后端API