网站首页 包含标签 API 的所有文章

  • 如何设计安全的API调用

    如何为网站设计安全的API访问? 我们在设计一个网站或平台的时候,经常需要向用户开放API访问。 这样用户就可以程序化地调用一些功能,举几个例子: 交易所开放API让用户可以进行低时延的程序化交易, 微信公众号平台开放API让三方工具进行运营管理工作, Stripe开放API让商家和其他平台能很好地集成支付功能。 当我们向用户开放API访问时,我们需要确保每次API调用都经过鉴权。 这意味着我们需要确认用户是他们所声称的身份。 我们一般使用两种常见的方法来进行鉴权: 基于令牌的身份验证 HMAC(基于哈希的消息验证码)验证 下图说明了它们的工作原理。 1、基于令牌 第1步 用户在客户端输入密码,然后客户端将密码发送到鉴权服务器。 第2步 鉴权服务器验证密码并生成一个有有效期的令牌。 第3步和第4步 现在,客户端可以发送请求,使用HTTP头中带有的令牌访问服务器资源。 这种访问在令牌过期前一直有效。 2、基于 HMAC 这种机制通过使用哈希函数(SHA256 或 MD5)生成消息验证码(签名)。 第1步和第2步 服务器生成两个密钥,一个是公共APP ID(公钥),另一个是 API Key(私钥)。 第3步 现在我们在客户端生成一个HMAC 签名(hmac A),该签名是根据图中列出的一组字段生成的。 注意这里会加入请求的时间戳,这样一个HMAC签名是有有效期的,不会一直有效。 第4步 客户端发送请求来访问服务器资源,HTTP头中包含hmac A。 第5步 服务器收到包含请求数据和鉴权标头的请求。 它从请求中提取必要的字段,并使用存储在服务器端的API Key 生成签名(hmac B)。 第6步和第7步 服务器会比较hmac A(在客户端生成)和hmac B(在服务器端生成)。 如果两者匹配,请求的资源将返回给客户端。 ...

    2023-12-13 技术教程 217
  • API key和token有什么区别?

    “计算机科学只存在两个难题:缓存失效和命名。” — Phil KarIton 命名的难度在于如何让变量、常量、函数或类的定义清晰而简洁,而不应有歧义。如果我们不能清楚的看懂某个变量,那么这个变量的命名就不太准确。‍ API key 和 token 就有这种问题,它们都是作为一种身份验证机制。前几天我在一次讨论中,有人提到这两个词可以互换使用。大约两分钟后,我不得不停止谈话并说“你们应该知道它们是不同的,对吧?”‍,说完会上鸦雀无声,显然他们不知道。事实证明,很多人都无法告诉我 API key 和 token 之间的区别。因此文本我将向大家介绍它们之间的区别。 定义 我们可以通过以下定义来区分 API key 和 token。 API key — 通过代码调用 API 时提供的值,用于识别和授权调用者。它旨在以编程方式使用,通常是一长串字母和数字。 token — 代表用户会话或特定权限的一段数据。供个人用户在有限的时间内使用。 生成方式 两者之间的创建方法通常也不同。 API key — 通常通过用户界面创建一次,并且在轮换之前可以一直使用,也可以选择配置为在一定时间后过期。 token — 在成功验证或登录成功时动态生成。通常过期时间较短,但可以刷新较长时间。 权限范围 权限范围是指授权部分或使用提供的身份验证方法时可以执行哪些功能。 API key — 固定的、不变的应用程序功能权限集。谁拥有 API key 就可以访问允许的资源。 token — 仅限于个人有权访问的特定数据或功能。这可能会受到角色或其他业务级别要求的影响。往往更关注数据限制。 安全性 它们的安全性如何?如果 API key 或者 token 被恶意用户泄露或获取,潜在的损害有多严重? API key — 由于这些密钥通常是长期存在的并且不限制对数据的访问,因此如果被泄露,可能会造成毁灭性的后果。通常撤销 API key 是解决问题的唯一手段。应用程序通常需要具有良好的可观察性,以识别受损密钥并找到恶意用户。 token — 设计时考虑到了安全性。通常是短暂的并且很容易被撤销。受损的令牌仅具有用户有权访问的数据范围,并且将自动过期。 使用方式 什么时候你会使用其中一种而不是另一种呢?看起来他们在利弊之间取得了很好的平衡。 API key — 用于服务器到服务器之间的通信,例如访问天气 API 等公共数据、与第三方系统集成。 token — 用于用户身份验证、细粒度访问控制 (FGAC)、授予对资源的临时访问权限、浏览器访问权限以及管理用户会话。 举个例子 现在我们了解了两者之间的区别,让我们看一下使用 Momento JavaScript SDK 的两个实际示例。 API key 上文提到过 API key 通常是在用户界面创建的。考虑到隐私性,我没有可以分享的实际 API key。 不过以下是大家作为用户如何通过 Momento 控制台获取 API 密钥的方法。‍ 大家可以选择所需的权限,设置可选的到期日期,然后点击 Genergate Api Key。 然后我们可以工作流程中使用该 API key。 token 与成功登录时生成的基于用户的一次性 token 进行对比。我们可以采用基于角色的示例,用户可以只读访问日历事件缓存,但可以发布和订阅协作主题的访问权限。 // called on successful login exports.handler = async (event) => { const user = await loadUserMetadata(event.userId); let token; switch(user.role){ case 'data-entry': token = await getDataEntryToken(user.tenantId); break; case 'admin': token = await getAdminToken(user.tenantId); break; default: throw new Error('Role not supported'); } return token; }; const getDataEntryToken = async (tenantId) => { const scope = { permissions: [ { role: 'readonly', cache: 'calendar-events', item: { keyPrefix: tenantId } }, { role: 'publishsubscribe', cache: 'collaboration', topic: `${tenantId}-events` } ] }; const response = await authClient.generateDisposableToken(scope, ExpiresIn.minutes(15)); return { token: response.authToken, expiresAt: response.expiresAt.epoch() }; }; 以在此处看到,我们创建了一个有效期为 15 分钟的令牌,其权限范围是日历功能的只读权限,并且仅允许访问以用户所属的 tenantId 开头的缓存项。 因此,我们根据用户的属性限制了功能和数据。 总结 API key 和 token 各有优缺点,一个并不比另一个更好。 在决定要应用哪种身份验证机制时,请结合你的应用场景来进行选择。 如果是用在用户会话的身份验证场景时,可以使用 token。 如果是给第三方系统提供接口需要身份验证时,可以使用 API key。 ...

    2023-11-02 138
  • 【首发】三网余额查询接口

    源码下载地址:https://wwam.lanzouj.com/idLRY16x7j7e 系统介绍:使用TP6.0框架,支持高并发请求查询,带签到领额度功能,可在线批量查询号码,支持USDT在线充值余额+卡密兑换余额! 系统演示图: ...

    2023-08-31 201
  • ChatGpt国内通过API使用教程,ChatGPT的apikey使用方法

    ChatGPT API 的获取: 首先,我们需要获取到自己的 APIKEY,格式是 sk-xxx 这样的 如果是在我们网站上购买的账号,都会带有 APIKey 点击购买 ChatGPT 账号带 API 获得的卡密格式按照:邮箱 —- 邮箱密码 —-ChatGPT 密码 —-apikey 格式分割 参考格式:如下图,—- 分割的最后一个,就是我们的 apikey ChatGPT API 的使用: 打开通过 API 调用 ChatGPT 的网站:ChatGPT 填写自己的 KEY 后,点击查询,会返回余额,不报错的话就可以直接使用啦~ 注意:目前官方网页版登陆使用不扣费,调用 API 按字数收费~ 号内余额体验金 能生成约几十万汉字回答 ...

    2023-03-13 448
  • 一款API水平越权漏洞检测工具

    功能 通过替换认证信息后重放请求,并对比数据包结果,判断接口是否存在越权漏洞 特点 1. 支持HTTPS2. 自动过滤图片/js/css/html页面等静态内容3. 多线程检测,避免阻塞4. 支持输出报表与完整的URL、请求、响应 安装和使用 安装依赖   python3 -m pip install -r requirements.txt 启动 python3 start.py 即可监听socks5://127.0.0.1:8889。安装证书使用SwitchOmega等插件连接该代理,并访问mitm.it即可进入证书安装页面,根据操作系统进行证书安装。以MacOS为例: 下载安装后,打开钥匙串访问,找到mitmproxy证书,修改为alwaystrust 检测漏洞首先准备好目标系统的A、B两账号,根据系统的鉴权逻辑(Cookie、header、参数等)将A账号信息配置config/config.yml,之后登录B账号 使用B账号访问,脚本会自动替换鉴权信息并重放,根据响应结果判断是否存在越权漏洞 生成报表每次有新漏洞都会自动添加到report/result.html中,通过浏览器打开: 点击具体条目可以展开/折叠对应的请求和响应:下载地址:https://github.com/y1nglamore/IDOR_detect_tool...

    2023-02-28 265
  • PHP程序之获取QQ头像

    可能很多朋友都用过qq头像引用吧 今天给大家分享一个已经写好的接口,大家可以上传到自己网站目录来引用。打开速度0.01秒,还不错。 源代码: ==== <?php $qq=$_GET['qq']; $src='https://api.gordsky.cn/qlogo/?qq='.$qq.'&s=100'; $res = imagecreatefromstring(file_get_contents($src)); header('Content-type: image/png'); imagepng($res); imagedestroy($res); ?> PHP  复制 使用方法 上传到网站根目录后,打开网址+1.php?qq=123456 ...

    2020-02-18 868
  • QQ获取昵称的接口

    接口地 https://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=QQ号码 示例 https://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=10001 结果 ...

    2020-02-18 3676
  • 分享几个QQ头像获取接口

    接口如下 把10001改成你的QQ https://q1.qlogo.cn/g?b=qq&nk=10001&s=640 https://q.qlogo.cn/g?b=qq&nk=10001&s=100 https://q.qlogo.cn/headimg_dl?bs=qq&dst_uin=10001&src_uin=gordsky.cn&fid=blog&spec=100 https://q.qlogo.cn/headimg_dl?dst_uin=10001&spec=640 https://q2.qlogo.cn/headimg_dl?spec=100&dst_uin=10001 http://q3.qlogo.cn/g?b=qq&nk=10001&s=100 ...

    2020-02-17 998

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注