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参数加密验证的解决方案(加密解密、安全验证过滤)

@漏刻有时

相关文章
|
11天前
|
算法 安全 Shell
SSH:加密安全访问网络的革命性协议
SSH:加密安全访问网络的革命性协议
48 9
|
2天前
|
存储 Java 数据库连接
实时计算 Flink版产品使用合集之jdbccatalog中能指定url参数吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
JavaScript
如何在JS中实现修改URL参数而不刷新页面
如何在JS中实现修改URL参数而不刷新页面
|
11天前
|
存储 JavaScript 前端开发
js原生方法,获取url上面所有参数,并返回一个对象
JavaScript函数`getUrlParameters`用于从URL中提取所有参数并返回一个键值对对象。它接收URL,分割查询字符串,解码参数对,并存储在对象中。重复参数键会被存储为数组。
|
11天前
|
JavaScript
js如何实现修改URL参数并不刷新页面
js如何实现修改URL参数并不刷新页面
|
11天前
|
安全 Java 应用服务中间件
当遇到非法 URL 参数时,如何保障网页正常打开
访问如`http://example.com?a@b=1`的链接出现400 Bad Request错误,这是因为Tomcat不允许请求目标中含有非法字符。Spring Boot 2可通过配置`server.tomcat.relaxed-query-chars`来允许特殊字符,但这样做可能引入安全风险。因此,建议在Nginx层使用`rewrite_by_lua_block`和`ngx.redirect`进行重定向,将非法字符替换为合法形式,如`http://example.com?ab=1`,同时记录日志以监控。此方案能避免直接修改后端代码,提高安全性。
39 0
|
11天前
|
存储 小程序
【边做边学】uni.switchTab的目标页面获取不到url携的参数
【边做边学】uni.switchTab的目标页面获取不到url携的参数
|
11天前
|
JavaScript 前端开发 关系型数据库
金融技术解决方案:用Python和Vue开发加密货币交易平台
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建加密货币交易平台。首先确保安装了Python、Node.js、数据库系统和Git。后端可选择Flask或Django框架,通过RESTful API处理交易。前端利用Vue.js、Vuex和Vue Router创建用户友好的界面,并用Axios与后端通信。这种架构促进团队协作,提升代码质量和平台功能。
|
11天前
|
算法 Java 数据安全/隐私保护
java MD5 32位加密
java MD5 32位加密
23 0
|
11天前
|
Java 数据安全/隐私保护
Java实现最电话号码的简单加密源码
Java实现最电话号码的简单加密源码
21 0