• API密钥

    2015-11-02 11:30:00
    什么是API密钥?  答:在api调用时,用来按照指定规则对您的请求参数进行签名,服务器收到你的请求时会进行签名验证,即可以界定你的身份也可以防止其他人通过某种手段恶意篡改你的请求数据。 密钥的使用?  ...







  • 商户密钥和api密钥by Ramesh Lingappa 通过拉梅什·林加帕(Ramesh Lingappa) 构建安全API密钥的最佳做法 (Best practices for building secure API Keys) We all know how valuable APIs are. They’re the ...


    by Ramesh Lingappa

    通过拉梅什·林加帕(Ramesh Lingappa)

    构建安全API密钥的最佳做法 (Best practices for building secure API Keys)

    We all know how valuable APIs are. They’re the gateway to exploring other services, integrating with them, and building great solutions faster.

    我们都知道API的价值。 它们是探索其他服务,与之集成以及更快地构建出色解决方案的门户。

    You might have built or are thinking of building APIs for other developers to use. An API needs some form of authentication to provide authorised access to the data it returns.

    您可能已经构建或正在考虑构建供其他开发人员使用的API。 API需要某种形式的身份验证,以提供对其返回的数据的授权访问。

    There are several authentication standards available today such as API Keys, OAuth, JWT, etc.

    今天有几种认证标准可用,例如API密钥, OAuthJWT等。

    In this article, we’ll look at how to correctly manage API Keys to access APIs.


    那么为什么要使用API​​密钥? (So Why API Keys?)

    API Keys are simple to use, they’re short, static, and don’t expire unless revoked. They provide an easy way for multiple services to communicate.

    API密钥易于使用,且简短,静态,并且除非被撤消,否则不会过期。 它们为多种服务提供了一种简便的通信方式。

    If you provide an API for your clients to consume, it’s essential for you to build it in the right way.


    Let’s get started, and I’ll show you how to build API Keys the right way.


    API密钥生成 (API Key Generation)

    Since the API key itself is an identity by which to identify the application or the user, it needs to be unique, random and non-guessable. API keys that are generated must also use Alphanumeric and special characters. An example of such an API key is zaCELgL.0imfnc8mVLWwsAawjYr4Rx-Af50DDqtlx.

    由于API密钥本身是用于标识应用程序或用户的身份,因此它必须是唯一,随机且不可猜测的。 生成的API密钥还必须使用字母数字和特殊字符。 此类API密钥的示例是zaCELgL.0imfnc8mVLWwsAawjYr4Rx-Af50DDqtlx

    安全的API密钥存储 (Secure API Key Storage)

    Since the API key provides direct access to data, it’s pretty much like a password that a user of a web or mobile app provides to gain access to the same data.


    Think about it. The reason we need to store API keys is to make sure that the API key in the request is valid and issued by us (just like a password).

    想一想。 我们需要存储API密钥的原因是,确保请求中的API密钥是有效的并由我们发出(就像密码一样)。

    We don’t need to know the raw API key, but just need to validate that the key is correct. So instead of storing the key in plain text (bad) or encrypting it, we should store it as a hashed value within our database.

    我们不需要知道原始的API密钥,而只需要验证密钥是否正确即可。 因此,我们应该将密钥作为哈希值存储在数据库中,而不是将密钥存储为纯文本(错误的)或对其进行加密。

    A hashed value means that even if someone gains unauthorised access to our database, no API keys are leaked and it’s all safe. The end user would send the raw API key in each API request, and we can validate it by hashing the API key in the request and compare the hashed key with the hash stored within our database. Here is a rough implementation of it in Java:

    哈希值表示即使有人获得了对我们数据库的未经授权的访问,也不会泄漏任何API密钥,这一切都是安全的。 最终用户将在每个API请求中发送原始API密钥,我们可以通过对请求中的API密钥进行哈希处理并将其与数据库中存储的哈希进行比较来对其进行验证。 这是在Java中的粗略实现:

    In the code above, the primary key will be a combination of the prefix and the hash of the API key {prefix}.{hash_of_whole_api_key}.


    But hold on, there is more. Storing a hashed value brings specific usability problems. Let’s address those now.

    但是等等,还有更多。 存储散列值会带来特定的可用性问题。 让我们现在解决这些。

    向用户展示API密钥 (Presenting the API Key to users)

    Since we don’t store the original API key, we can show it only once to the user, at the time of creation. So be sure to alert users that it cannot be retrieved again, and they need to generate a new token if they forget to copy the API key and store it safely. You can do something like this:

    由于我们不存储原始API密钥,因此在创建时只能向用户显示一次。 因此,请确保警告用户无法再次检索它,如果他们忘记复制API密钥并安全地存储它,则需要生成一个新令牌。 您可以执行以下操作:

    用户以后如何识别生成的API密钥 (How users can identify a generated API Key later)

    Another problem is how users identify the right API key in your console if they need to edit or revoke it. This can be solved by adding a prefix to the API key. Notice in the picture above the first 7 characters (that’s our prefix), separated by the dot.

    另一个问题是,如果用户需要编辑或撤消它,则如何在控制台中识别正确的API密钥。 这可以通过在API密钥上添加前缀来解决。 请注意图片中的前7个字符(这是我们的前缀),以点分隔。

    Now you can store this prefix in the database and display it in the console so users are able to quickly identify the right API key entry, like this:


    不要给API密钥所有权力 (Don’t give the API Key all the power)

    One common mistake that API key providers make is providing one key to access everything, since it’s easy to manage. Don’t do that. Assume that a user just needs to read an email, and generates an API key. But that key now has full access to other services, including deleting records in the database.

    API密钥提供程序犯的一个常见错误是提供一个密钥来访问所有内容 ,因为它易于管理。 不要那样做 假设用户只需要阅读一封电子邮件,并生成一个API密钥。 但是,该密钥现在可以完全访问其他服务,包括删除数据库中的记录。

    The right approach is to allow the end users to properly restrict API Key access and choose specific actions that an API key can carry out. This can be done by providing scopes, where each scope represents a specific permission.

    正确的方法是允许最终用户适当地限制对API密钥的访问,并选择API密钥可以执行的特定操作。 这可以通过提供作用域来完成,其中每个作用域代表一个特定的权限。

    For example,


    • if you need an API key to just send emails, you can generate an API key with the scope as “email.send”

      如果您只需要一个API密钥即可发送电子邮件,则可以生成范围为“ email.send”的API密钥

    • if the end user has multiple servers and each carries out a specific action, then a separate API key can be generated with a specific scope.


    So while creating the API key, allow users to select what access that API key should have, as in the image below.


    This way users can generate multiple API keys, each with specific rules of access for better security. And when an API request is received, you can check if the API Key has the right scope to access that API. Now the database looks something like this:

    这样,用户可以生成多个API密钥,每个密钥都有特定的访问规则,以提高安全性。 并且,当收到API请求时,您可以检查API密钥是否具有访问该API的正确范围。 现在数据库看起来像这样:

    限速API密钥 (Rate limiting API keys)

    Yes, you might already know it, but it is important to rate limit requests made with specific API Keys to ensure no bad actor can take down your API servers or cause performance issues that affect your other customers. Having a proper rate limiting and monitoring solution keeps the API service healthy.

    是的,您可能已经知道这一点,但是对使用特定API密钥发出的请求进行速率限制很重要,以确保没有不良行为者可以关闭您的API服务器或导致影响其他客户的性能问题。 拥有适当的速率限制和监视解决方案可使API服务保持健康。

    结论 (Conclusion)

    API keys, when built right, are still a great way to communicate with another server. As we reviewed in this article, following certain practices offers benefits to both API consumers and API providers. Hope this helps you.

    正确构建API密钥后,仍然是与另一台服务器通信的好方法。 正如我们在本文中所回顾的那样,遵循某些惯例可以为API使用者和API提供者带来好处。 希望对您有帮助。

    Happy Securing your APIs!


    翻译自: https://www.freecodecamp.org/news/best-practices-for-building-api-keys-97c26eabfea9/


  • 设置商户号支付密钥方法如下: 1. 申请通过审核后,打开微信发来的邮件。 直接获取微信支付商户号(接口文档中的商户号MCHID);(也叫 受理商ID 填写到后台)。 商户支付密钥key 按以下步骤自己设置生成。 ...
    1. 申请通过审核后,打开微信发来的邮件。
    直接获取微信支付商户号(接口文档中的商户号MCHID);(也叫 受理商ID 填写到后台)。

    商户支付密钥key 按以下步骤自己设置生成。


    2 点击访问 新商户平台http://mch.weixin.qq.com 或https://pay.weixin.qq.com,用账号和密码登录。并安装证书。
    step 1

    step 2 点击确定。

    step 3 填写验证信息。

    step 4 填写手机验证码。

    step 5 证书安装成功。

    3 配置密钥。


    step3 自己设置32位密钥,推荐使用在线密码生成器生成(个人自己写的无法发起支付),http://suijimimashengcheng.51240.com 或 http://www.sexauth.com/


  • API密钥

    千次阅读 2015-11-02 11:30:00
    什么是API密钥?  答:在api调用时,用来按照指定规则对您的请求参数进行签名,服务器收到你的请求时会进行签名验证,即可以界定你的身份也可以防止其他人通过某种手段恶意篡改你的请求数据。   密钥的使用? ...






  • 在使用chrome浏览器的开发-chromium的时候,会出现缺少google api密钥,因此chromium的部分功能将无法使用。此时,谷歌账户无法登陆,诸多信息无法同步。 下面介绍这种问题的解决办法。 1.在使用chromium的时候,会...
  • API密钥

    2010-09-08 15:22:59
    所谓API密钥(API Key),其实就是一个字符串,在使用script标签导入API类库的时候作为请求参数传给谷歌的地图服务器,形式就是: <script src="http://ditu.google.com/maps?file=api&v=2&...
  • 解决Chromium “缺少 Google API 密钥”问题 每次打开 Chromium,地址栏下方就会提示 “缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用”。提示不仅很烦人,并且还无法在 Chromium 登录 Google 账户...
  • 支付账户:appid\mch_id(微信支付商户号)\API密钥\Appsecret
  • 百度地图api 密钥获取

    万次阅读 2019-03-14 17:05:29
    1、进入百度地图api首页 ... 3、填写完后 提交,等待邮件确认(别着急,我等了大约十分钟才收到邮件) ... 5、填写信息 名字随便起就可以 然后提交 IP白名单 可以复制他下面给的例子 6、提交后跳转页面...
  • 百度地图API 密钥

    万次阅读 多人点赞 2015-06-07 12:11:04
    百度地图API 密钥:DD279b2a90afdf0ae7a3796787a0742e
  • <pre><code>$apikey=array('api1','api2','api3','api4'); $i=array_rand($apikey); $apikey = $apikey[$i]; </code></pre> <p>But sometimes i still get blank page, my question is how to bypass limit? I want...
  • 百度地图API密钥

    万次阅读 2017-11-29 10:54:36
    百度地图API 密钥 DD279b2a90afdf0ae7a3796787a0742e
  • Google地图于2016年6月22日更新了Google地图API接口,更新接口后必需要申请Google地图API密钥才可以使用Google地图。 如果您以前引用的Google地图中没有设置API密钥,可能会在页面上出现报错提...
  • <p>I want a PHP function that identifies whether the Google+ API is ID of a Profile, Page or Community. </div>
  • 如何获取Google地图API密钥

    千次阅读 2019-08-21 23:08:56
    如何获取Google地图API密钥? 使用Google地图的用户需要注意了!Google地图于2016年6月22日更新了Google地图API接口,更新接口后必需要申请Google地图API密钥才可以使用Google地图。 如果您以前引用的Google地图中...
  • 会看到新增一项商户支付密钥(API密钥),复制里面参数 2、登录微信支付商户平台:https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F 如果已经有商户平台的账号,可直接扫码登录平台。 3,登录...
  • 商户密钥和api密钥Similar to the SSL keys, API keys too are being considered to be an important factors for strengthening security in Cloud Hosting environment. 与SSL密钥相似,API密钥也被视为增强Cloud...
  • 前提 在打开Chromium时,上面会出现“缺少 Google API ...获得API https://cloud.google.com/console 创建或选择已有项目 点击左侧边栏 <API和服务> ——<凭据> 点击<创建凭证>(类型为 “API 密...
  • 分享:微信支付如何设置商户支付密钥(API密钥)教程方法 http://bbs.heirui.cn/forum.php?mod=viewthread&tid=6933 1,首先你在微擎后台 -> 功能选项 -> 支付参数 -> 设置微信支付 -> 选择新版...
  • setx GOOGLE_API_KEY AIzaSyCkfPOPZXDKNn8hhgu3JrA62wIgC93d44k setx GOOGLE_DEFAULT_CLIENT_ID 811574891467.apps.googleusercontent.com setx GOOGLE_DEFAULT_CLIENT_SECRET kdloedMFGdGla2P1zacGjAQ...


1 2 3 4 5 ... 20
收藏数 77,303
精华内容 30,921