编程语言
首页 > 编程语言> > php-为Web应用程序分发和使用API​​密钥

php-为Web应用程序分发和使用API​​密钥

作者:互联网

我有一个Web应用程序,正在为其构建一个Drupal模块,该模块允许我的客户访问我的应用程序上的某些数据.

我打算将秘密的API密钥分发给需要在其Drupal模块副本中输入该值的客户.然后,这个Drupal模块与我的Web应用程序进行对话,但是我需要确保POST请求确实来自该来源.

如何使用此“秘密密钥”传递一些信息,以便当我的应用程序收到它时,它将知道:

(a) its from that client's server.
(b) it hasnt been eavesdropped on / copied and used by someone else?

我是否应该使用此API密钥作为密码来加密一些与POST请求其余部分匹配的数据?接收到它后,我会使用其API密钥的副本对其进行解密,如果它与其余数据匹配,我认为它已通过验证?

有没有适合我的框架? Zend内有东西吗?

解决方法:

使用HTTPS并仅在请求中发送API密钥.就这么简单.

如果您使用HTTP,那么您将重新发明轮子.

更新:

这是阅读评论后的更新,因为在这个问题中您没有解释要向网站访问者提供API密钥(在这种情况下,无论您做什么都将被搞砸).

juanpaco的评论解释了怎么做(以及我最初认为您正在做的事情),但是我将尝试更详细地解释它.

最重要的是,您不要在Web表单中使用API​​密钥. API密钥仅用于客户服务器和API服务器之间的通信.

这是一个简化的解释:

>您给客户一个密钥和一些要在其服务器上安装的软件/模块/库.
>访客访问客户的网站时,他会看到由模块生成的一些HTML,其中不包含任何API密钥,并且只能与客户的服务器通信(如果涉及任何敏感信息或用户帐户,则可以使用HTTPS进行通信).
>客户服务器上的模块从访问者那里获取请求.
>您的模块使用API​​密钥(带有HTTPS)连接到服务器.
>您的API服务器响应客户的服务器.
>客户的服务器响应访客.

您的API密钥永远不会以明文形式发送,也永远不会提供给网站访问者.

这是使用API​​密钥的唯一合理方法,在我首先阅读您的问题之后,我假设您担心在服务器与客户服务器之间发送API密钥的安全性.

如果您的客户将其密钥提供给其网站的每个访问者,那么这些访问者将始终能够知道它们,无论您尝试如何努力.提供访问者API密钥并使其可以使用但无法读取将是不可能的.不难-不可能.无论使用哪种协议,加密或任何使用方式.

(感谢juanpaco将这个旧答案提请我注意.)

标签:security,web-applications,api-key,php
来源: https://codeday.me/bug/20191102/1994439.html