接口测试 — 8.接口测试的认证

news2024/11/14 23:35:37

1、接口的安全机制

一般在实际项目的接口开发中,接口的安全机制是绕不开的一个话题。不管是自己内部使用的接口也好,还是给第三方使用的接口也好。如果毫无限制的给任何人调用,那么必然会带来诸多安全问题。

例如:重要数据泄密,系统瘫痪等。

2、用户认证

(1)用户认证说明:

HTTP的请求中,有一些请求是需要通过授权认证之后才会响应,授权认证就是检查用户名和密码的过程(鉴权)。

HTTP有一个基本认证方式:在认证的过程中,客户端需要把用户名和密码发给服务器,服务器收到并检查通过后才会响应请求,不通过返回401状态码,提示未授权或者授权失败。

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

(2)用户认证接口处理:

在测试Web 接口时,不管所用的接口工具(Postman)还是Requests 库,都提供的Auth选项/参数。

这个选项提供了username 和password 的选项,但这里的Auth用户名和密码,与系统登录的用户名密码有所区别,登录的用户名密码是作为接口的参数来传输,而Auth不是,但它仍然包含在request请求中。

Requests 允许你使用自己指定的身份验证机制。

自定义的身份验证机制是作为 requests.auth.AuthBase 的子类来实现的,也非常容易定义。Requests 在 requests.auth 中提供了两种常见的的身份验证方案: HTTPBasicAuthHTTPDigestAuth

3、示例说明

示例1:使用明文提交用户名密码。

import requests

# 定义请求url
base_url = "http://httpbin.org/get?username=xiaoming&password=123456"

# 发送请求
response = requests.get(base_url)

# 输出请求结果
if response.status_code == 200:
    print(response.text)
    

"""
# 返回结果:(即请求发出的参数的返回)
{
  "args": {
    "password": "123456", 
    "username": "xiaoming"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "keep-alive", 
    "Host": "127.0.0.1:9999", 
    "User-Agent": "python-requests/2.18.4"
  }, 
  "origin": "106.35.11.30", 
  "url": "http://httpbin.org/get?username=xiaoming&password=123456"
}
"""

我们可以看到提交与用户名密码相关的数据是明文显示。

示例2:使用requests库的Auth选项提交请求。

import requests
from requests.auth import HTTPBasicAuth

base_url = "http://httpbin.org"

# 身份验证-BasicAuth
response = requests.get(base_url + "/basic-auth/xiaoming/123456", auth=HTTPBasicAuth('xiaoming', '123456'))
if response.status_code == 200:
    print(response.text)


"""
返回结果:
{
  "authenticated": true, 
  "user": "xiaoming"
}

翻译:
{ “已认证” :true ,“用户” :“ xiaoming” }
"""

我们可以看到发送出的数据被隐藏了,没有任何显示。

示例3:我们请求一个实际的登陆界面:

import requests
from requests.auth import HTTPBasicAuth

# 定义请求URL
url = 'http://sck.rjkflm.com:666/spider/auth/'

# HTTPBasicAuth 认证
ah = HTTPBasicAuth('admin', 'admin')

# 发送请求
response = requests.get(url=url, auth=ah)

# 显示结果
if response.status_code == 200:
    print(response.text)

我们使用Fiddler抓取请求,查看请求体。

可以看出Authorization(授权)属性的内容,也就是我们的用户名密码,被进行了加密。

总结:

这是一种简单的身份认证,当一个客户端向一个需要认证的HTTP服务器进行数据请求时,如果之前没有认证过,HTTP服务器会返回401状态码,要求客户端输入用户名和密码。

用户输入用户名和密码后,HTTPBasicAuth是通过HTTP的Authorization请求头中,携带经过base64加密的用户名和密码而实现的一种认证。

服务端接收用户名和密码之后会解密其内容,从而获取真正传递过来的用户名和密码,之后再去同步数据库中的用户名和密码,进行比对。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1323855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node.js mongoose schemaTypes

目录 官方文档 简介 SchemaType 示例 配置SchemaType规则 通用规则 特定schemaType规则 String Number Date Map monggose会根据shcemaType将文档值转换成指定的类型 官方文档 Mongoose v8.0.3: SchemaTypes 简介 SchemaTypes是在使用Mongoose时,用于…

Oracle定时任务的创建与禁用/删除

在开始操作之前,先从三W开始,即我常说的what 是什么;why 为什么使用;how 如何使用。 一、Oracle定时器是什么 Oracle定时器是一种用于在特定时间执行任务或存储过程的工具,可以根据需求设置不同的时间段和频率来执行…

基于EasyDarwin、ffmpeg实现rtsp推流

目录 1 安装EasyDarwin 2 编译安装ffmpeg 3 启动EasyDarwin 4 ffmepg推流 5 百度网盘备份 某项目中测试时需要用到推流,于是用EasyDarwin、ffmpeg实现了RTSP推流,简单记录下过程, 1 安装EasyDarwin 这个可以去官网下载:Eas…

【openwrt学习笔记】IPV6 ND协议学习和socket编程

目录 一、参考链接二、学习目标三、代码解析3.1 仅解析NA报文保存设备mac和ipv6地址信息3.1.1 open_ns_socket3.1.2 recv_ns_pack 3.2 解析NA和NS报文中DAD报文保存设备mac和ipv6地址信息3.2.1 open_ns_na_socket3.2.2 recv_ns_na_pack 四、代码优化4.1 BPF参考学习资料4.2 代码…

DSSAT作物模型建模方法与进阶基于Python语言快速批量运行DSSAT模型及交叉融合、扩展应用技术应用

随着数字农业和智慧农业的发展,基于过程的作物生长模型(Process-based Crop Growth Simulation Model)在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农业碳中和、农田固碳减排等领域扮演着越来越重要的作用。Decisi…

跨境卖家必看!TikTok带货经验分享,TikTok直播带货怎么做?

如今直播带货正发展得如火如荼,不少跨境人也纷纷做起了带货,其中TikTok带货的力量不容小觑,也已经成为了跨境电商运营非常火爆的营销方式,有很多朋友问龙哥TikTok带货怎么做,其实以龙哥这么多年的经验来看,…

智能物联网汽车3d虚拟漫游展示增强消费者对品牌的认同感和归属感

汽车3D虚拟展示系统是一种基于web3D开发建模和VR虚拟现实技术制作的360度立体化三维汽车全景展示。它通过计算机1:1模拟真实的汽车外观、内饰和驾驶体验,让消费者在购车前就能够更加深入地了解车辆的性能、特点和设计风格。 华锐视点云展平台是一个专业的三维虚拟展…

JRT打印元素绘制协议整合PDF

打印不光要能打印内部的单据,对于检验的打印还有外送回传的PDF报告也需要能够打印,所以需要把打印PDF文件整合进来,为此给打印元素绘制协议增加PDF类型的元素。 定义如下,由绘制协议按地址下载文件后和其他打印元素整合&#xff…

【BEV感知】BEVFormer 融合多视角图形的空间特征和时序特征 ECCV 2022

前言 本文分享BEV感知方案中,具有代表性的方法:BEVFormer。 它基于Deformable Attention,实现了一种融合多视角相机空间特征和时序特征的端到端框架,适用于多种自动驾驶感知任务。 主要由3个关键模块组成: BEV Que…

14 v-model绑定输入框

概述 v-model用于实现双向数据绑定,使用v-model绑定输入框是Vue3中最常见的用法之一。 比如,在制作登录界面的时候,我们会使用v-model绑定用户名和密码,这里的用户名和密码都是输入框。 基本用法 我们创建src/components/Demo…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现

一.项目介绍 基于SpringBootVue 电影院订票管理系统 分为前端和后端。 前端(用户): 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票(需选择影院座位)、看过(评论…

接口测试和测试用例分析

只要有软件产品的公司百分之九十以上都会做接口测试,要做接口测试的公司那是少不了接口测试工程师的,接口测试工程师相对于其他的职位又比较轻松并且容易胜任。如果你想从事接口测试的工作那就少不了对接口进行分析,同时也会对测试用例进行研…

error while writing to output stream

unable to start device cairo_pdf 报错一般2种原因: 1.文件路径错误 2. 有其他软件打开文件导致不能写入

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(三)FEEMD

往期精彩内容: 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测(三)EMD-LSTM-Attention模型-CSDN博客 风速预测(四&#xf…

STM32/STM8资源节约主义编程方式

STM32/STM8资源节约主义编程方式 在小资源芯片进行代码设计时,如STM32C0系列,STM8系列,因为官方库本身要包含各种场景应用特征的支持,所以会有一些冗余的代码占用更多FLASH空间。当需要实现资源占用最简化设计方式时,…

Android年份选择器(超简单-可直接复制使用)

效果图 思路 1、流程: 通过点击textview触发年份选择器dialog显示,选中年份后,更新到textview。 2、如何只显示年份? 隐藏月份和天数即可(但仍需给一个初始化数据)。 实现 1、直接新建一个工具类OnPickY…

实时天气预警信息API:全面提供各种天气灾害预警

前言 随着气候变化的不断加剧,天气灾害成为大家关注的焦点。人们对于天气信息的获取需求越来越大,特别是在天气灾害发生时,及时、准确的天气预警信息能够极大地帮助人们做好防范准备,减少灾害带来的损失。为了满足这一需求&#…

去掉乘法运算的加法移位神经网络架构

[CVPR 2020] AdderNet: Do We Really Need Multiplications in Deep Learning? 代码:https://github.com/huawei-noah/AdderNet/tree/master 核心贡献 用filter与input feature之间的L1-范数距离作为“卷积层”的输出为了提升模型性能,提出全精度梯度…

鸿蒙 - arkTs:快速开始

index.ets文件理解: 新建模拟器: 1. 找到并打开设备管理器 2. 点击新建模拟器 3. 选择硬件之后下一步 4. 选择系统镜像,没有安装的话需要先安装 5. 设置模拟设备名称并点击完成 6. 提示创建成功代表刚才创建的模拟设备可以进行使用了…