什么是API密钥及其安全使用指南?

应用编程接口(API)密钥是应用编程接口用来识别调用应用程序或用户的唯一代码。API密钥用于追踪和控制API的使用者及其使用方式,并验证和授权应用程序,其运作原理与用户名和密码相似。

API密钥以单一密钥或一组多个密钥的形式出现。用户应该遵循最佳实践,改善整体安全性,以防止API密钥被盗并避免API密钥泄露的相关后果。

API与API密钥

要了解什么是API密钥,必须先知道什么是API。应用编程接口或API是允许两个或多个应用程序共享信息的软件中介。例如,CoinMarketCap的API允许其他应用程序检索和使用价格、交易量和市值等加密货币数据。

API密钥形式多样,可以是单一密钥或一组多个密钥。不同的系统使用这些密钥来验证和授权应用程序,类似于用户名和密码的使用原理。API客户端使用API密钥来验证调用API的应用程序。

例如,假设币安学院要使用CoinMarketCap API,CoinMarketCap生成一个API密钥,在币安学院(API客户端)请求API访问权限时用于验证其身份。币安学院访问CoinMarketCap的API时,应将此API密钥连同请求一起发送给CoinMarketCap。

此API密钥仅限币安学院使用,不得与他人共享或发送给他人。共享此API密钥,即为允许第三方以币安学院的身份访问CoinMarketCap,并且第三方的任何操作都将显示为来自币安学院。

CoinMarketCap API还能借助API密钥来确认应用程序是否有权访问所请求的资源。此外,API所有者用API密钥能监控API活动,例如请求的类型、流量和数量。

什么是API密钥?

API密钥用于控制和追踪API的使用者及其使用方法。“API密钥”一词对不同的系统而言含义有所不同。有些系统只有单一代码,其他系统则有多个针对单一“API密钥”的代码。

因此,“API密钥”是API用于验证和授权调用用户或应用程序的唯一代码或一组唯一代码。有些代码用于验证,有些则用于创建加密签名以证明请求的合法性。

验证代码通常统称为“API密钥”,用于加密签名的代码则名称各异,例如“加密密钥”、“公钥”或“私钥”。 验证需要识别所涉及的实体,并确认其身份是否与所声称的一致。

另一方面,授权指定允许访问的API服务。API密钥的作用类似于账户的用户名和密码,可以连接到其他安全功能,以提高整体安全性。

每个API密钥通常由API所有者作为特定实体生成(详情见下方),每次调用API端点时需要用户验证或授权(或二者并用),并且都会用到相关密钥。

加密签名

有些API密钥将加密签名用作附加验证层。用户要向API发送某些数据时,可将另一个密钥生成的数字签名添加到请求中。API所有者使用密码学,即可验证此数字签名是否与发送的数据匹配。

对称签名与非对称签名

通过API共享的数据可通过加密密钥进行签名。以下为密钥的类别:

对称密钥

此类密钥涉及用一个加密密钥同时执行数据签名和签名验证。在对称密钥类别中,API密钥和加密密钥通常由API所有者生成,API服务必须用相同的加密密钥验证签名。使用单一密钥的主要优势在于,生成和验证签名的速度更快,所需算力更少。散列消息认证码(HMAC)就是对称密钥的典型代表。

非对称密钥

此类密钥涉及到私钥与公钥两种密钥的使用。二者之间存在区别,但通过密码学相关联。私钥用于生成签名,而公钥用于验证签名。API密钥由API所有者生成,私钥和公钥对则由用户生成。API所有者只需使用公钥进行签名验证,私钥即可保持本地加密。

使用非对称密钥的主要优势在于,签名生成与验证密钥独立开来,安全性更高。这样一来,外部系统可在无法生成签名的情况下验证签名。另一个优势则是,有些非对称加密系统支持私钥添加密码。RSA密钥对便是其中的典型代表。

API密钥是否安全?

API密钥的职能取决于用户。API密钥类似于密码,同样需要谨慎对待。共享API密钥与共享密码差不多。这样做用户的账户会面临风险,因此不应该共享。

API密钥能在系统中执行强大的操作,常常会成为网络攻击目标。各种操作包括请求个人信息或执行金融交易等。事实上,已经发生过网络爬虫攻击在线代码数据库,窃取API密钥得手的案例。

API密钥遭窃的后果很严重,可能会导致重大经济损失。此外,有些API密钥不会过期。一旦被盗,只要密钥本身未作废,攻击者就能无度使用。

使用API密钥的最佳实践

API密钥能访问敏感数据并普遍存在漏洞,因此使用安全至关重要。使用API密钥提高整体安全性时,敬请遵循以下最佳实践指南:

  1. 尽量频繁变更API密钥。这意味着应删除当前的API密钥并创建新密钥。对于多个系统,生成和删除API密钥很容易。某些系统要求用户每30天至90天更改密码。与之相似,尽量按此频率更换API密钥。

  2. 使用IP白名单:创建API密钥时,制定一份授权使用该密钥的IP列表(即IP白名单),或者详列IP屏蔽清单(即IP黑名单)。这样即使API密钥被盗,无法识别的IP则不得访问。

  3. 使用多个API密钥:拥有多个密钥并划分各个密钥的职能将能降低安全风险,原因在于安全性不由具有广泛权限的单一密钥决定。您可以为每个密钥设置不同的IP白名单,进一步降低安全风险。

  4. 安全存储API密钥:不要将密钥存储在公共场所或公共计算机上;不要以原始纯文本格式存储。相反,为了提高安全性,请加密或使用加密管理器单独存储各个密钥,不要无意暴露。

  5. 请勿透露个人的API密钥。共享API密钥与共享密码大同小异。共享即表示向另一方授予本人的验证和授权权限。API密钥泄露后,将会遭到窃取并用于侵入个人账户。API密钥仅限本人与生成该密钥的系统使用。
     

API密钥泄露后,请先禁用以防造成更大的损失。如造成经济损失,请将事件相关的关键信息截图,联系相关单位,并向警方报案。这是增加追回损失资金几率的最佳做法。 

结语

API密钥提供核心的验证和授权功能,用户必须谨慎管理和保护自己的密钥。保障API密钥的安全使用应该考虑多层次、多方面的因素。总而言之,API密钥应视作个人账户密码。

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

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

相关文章

[计算机效率] 在当前文件夹以管理员身份运行批处理

2.7 在当前文件夹以管理员身份运行批处理 这个功能对于要经常运行批处理程序的人来说真的很方便。每次要要运行批处理,要么就是直接打开的批处理不是以管理员身份运行的,要么就是在批处理中要一步步的切换进入到目标文件夹中,非常费时间。 方…

录屏直播技巧大揭秘,轻松捕捉精彩瞬间

录屏直播作为一种流行的线上内容创作方式,备受关注。无论是游戏主播、教程讲解还是线上会议,录屏直播都能轻松应对。本文将介绍三种录屏直播方法,并对其进行分步骤详细说明,帮助读者轻松掌握录屏直播的技巧,为内容创作…

c语言 线性搜索算法

线性搜索被定义为一种顺序搜索算法,从一端开始,遍历列表中的每个元素,直到找到所需的元素,否则搜索将继续,直到数据集的末尾。 线性搜索算法 线性搜索算法如何工作? 在线性搜索算法中: …

Linux VM虚拟环境 设置静态IP

目录 查看自己的网卡配置说明重启网卡实例测试配置情况测试网络 查看自己的网卡 ip a配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens32配置说明 [rootlinux-server ~]# cd /etc/sysconfig/network-scripts/ #网卡配置文件存放路径 [rootlinux-server network-scri…

凡得首席战略官蔡聪,将出席“ISIG-流程挖掘技术与应用发展峰会”

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(RPA中国、AIGC开放社区、LowCode低码时代)主办。大会旨在聚合每一位产业成员的力量,深入探索R…

java后端常见问题

java面向对象的特征,如何应用 面向对象编程是利用类和对象的编程思想万物皆成类,对象是类的具体体现,面向对象的三大基础特性,继承封装多态。、封装:封装隐藏了类的具体内部实现机制,可以在不影响使用的情…

开源导出html表格项目-easyHtml

开源导出html表格项目-easyHtml 背景介绍 背景 项目的由来,在面试的过程中,发现这个需求(导出html表格)比较常见,同时也引起我的兴趣,所以就有了开源项目easyHtml第一个版本 介绍 功能 支持自定义表格标…

【JavaScript 漫游】【035】同源限制

文章简介 本篇文章为【JavaScript 漫游】专栏的第 035 篇文章,记录了浏览器模型同源限制相关的知识点。 概述 浏览器安全的基石是“同源政策”(same-origin policy)。1995 年,该政策由 Netscape 公司引入浏览器。目前&#xff…

云服务器与传统服务器价格对比

在信息化时代,服务器作为企业数据存储和计算的核心设备,扮演着举足轻重的角色。传统的物理服务器与近年来兴起的云服务器在功能、性能、安全性等方面各有千秋,而价格则是企业在选择时不得不考虑的重要因素。本文将简要科普云服务器与传统服务…

解释 JavaScript 中 this 的值?

大部分 JavaScript 学习者在学习this 概念时通常觉得一头雾水,许多人觉得是 JavaScript 中最复杂的概念之一,然而this 值是 JavaScript 面试经典题,搞懂 this 值也是战胜面试的第一步。本篇文章会整理出来 this 值的 5 种判断方式,让读者在面试时能轻易掌握这些概念。 在 …

[答疑]AI能做“需求分析”吗+警惕造词圈子割韭菜

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 第五元素 2024-3-10 21:02 潘老师,AI热度不减,现在sora出来更是火爆。有些在github上有几万star的程序员,宣称能用AI做“需求分析”,好…

Java字符串处理详解:从入门到精通

Java字符串处理详解:从入门到精通 文章目录 Java字符串处理详解:从入门到精通前言一、创建和初始化字符串二、字符串的基本操作1.连接字符串2.获取字符串长度3.获取指定位置的字符4. 比较字符串5. 查找子串6. 截取子串7. 替换字符串8. 转换大小写9. 去除…

TCP/IP协议栈

TCP/IP协议栈(Transmission Control Protocol/Internet Protocol Suite)是互联网上进行数据通信的一系列网络协议的集合,它是现代计算机网络通信的基础架构。 它由多个不同的协议层构成,每层负责不同层面的数据处理和传输工作&…

京津冀协同发展:北京·光子1号金融算力中心——智能科技新高地

京津冀协同发展是党中央在新的历史条件下提出的一项重大国家战略,对于全面推进“五位一体”总体布局,以中国式现代化全面推进强国建设、民族复兴伟业,具有重大现实意义和深远历史意义。随着京津冀协同发展战略的深入推进,区域一体…

linux内核原理--进程,线程

1.进程与线程 linux中调度与执行代码流的基础单位是线程. 我们通过父进程产生新的子进程,其实是产生一个新的线程.不过这个线程属于一个新的线程组,且是线程组的组长. 我们通过兄弟线程p产生新的线程q.也是…

SpringBoot总结-配置管理和日志管理

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载 整合配置文件 1.在springboot整合配置文件,分成两大类: application.properties application.yml 或者是 Boots…

模板模式-C#实现

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 主要解决:一些方法通用,却在每一个子类都重新…

javaEE13(网站第8章两个课后题)

1、对“jspservletjavabean实现分页查询”功能做如下补充: (1)记录批量删除:每个记录前添加复选框,点击批量删除,删除选中记录。 增加跳转到任意页功能。用户可改变每页记录条数。 页面&am…

JAVA学习-IO.ZIP压缩输入输出流

ZIP压缩输入输出流是Java中用于处理ZIP格式文件的API,它们提供了对ZIP文件进行压缩和解压缩操作的功能。 一、Java中常用的ZIP压缩输入输出流有以下几种: 1. ZipOutputStream: 这是用于将数据写入ZIP文件的输出流,可以将多个文件…

phpqrcode生成二维码

public function getImg(){ $uid1000; //自定义用户id require_once /sdk/phpqrcode/phpqrcode.php; //注意替换sdk路径 $object new \QRcode(); $value \App\get_upload_path(/appapi/Agent/share?code.$code); $errorCorrectionLevel L;//容错级别 $mat…