Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对API的用户进行身份验证_Php_Mysql_Api_Authentication_Encryption - Fatal编程技术网

Php 如何对API的用户进行身份验证

Php 如何对API的用户进行身份验证,php,mysql,api,authentication,encryption,Php,Mysql,Api,Authentication,Encryption,我共同拥有的一个网站要求我们为我们的网站添加一些内容,这对我们来说是很好的广告。问题是,由于我们公司的性质,我们必须非常小心谁可以访问我们的网站。(我们向广播电台分发标签音乐) 跟踪到目前为止 因此,我已经开始了内容的新页面。我想我需要一个带有调用站点名称的哈希字符串,一个我们站点的密钥,可能还有日期,加密并包含在从调用站点发送的查询字符串或cookie中。我们的目标是防止从其他站点(他们的站点也有密码保护)调用此功能,包括DNS欺骗,以欺骗我的站点认为它是从该站点请求的 所以我认为这是一个很好

我共同拥有的一个网站要求我们为我们的网站添加一些内容,这对我们来说是很好的广告。问题是,由于我们公司的性质,我们必须非常小心谁可以访问我们的网站。(我们向广播电台分发标签音乐)

跟踪到目前为止

因此,我已经开始了内容的新页面。我想我需要一个带有调用站点名称的哈希字符串,一个我们站点的密钥,可能还有日期,加密并包含在从调用站点发送的查询字符串或cookie中。我们的目标是防止从其他站点(他们的站点也有密码保护)调用此功能,包括DNS欺骗,以欺骗我的站点认为它是从该站点请求的

所以我认为这是一个很好的解决方案

  • 是吗?如果没有,我应该尝试什么
  • 我该怎么做?我想我应该在他们的站点上的iFrame中调用API,源作为我的站点,页面带有查询字符串,但是我应该如何获得调用站点的URL呢?我应该用什么来加密查询字符串密钥

  • 您可以要求SSL连接并从服务器分发证书,以要求客户端使用这些证书来验证其身份。这将是最简单的方法

    编辑

    我突然想到,我不确定您是否担心有人试图使用其他人的帐户,或者您的服务是否应该按域付费


    你真的无法抵御后者,因为任何有足够决心的人都可以简单地创建自己的API,在有效的上下文中与你的API交互,并从他们希望将信息传播到的任何其他站点调用它。

    我建议使用公钥加密。为每个用户生成一个您发送给他们的公钥,并为您的记录生成一个私钥

    他们应该加密当前时间以及其他自识别信息,如IP地址。然后,当您收到握手时,您可以使用私钥对其进行解密,然后验证时间是否过远、IP地址是否正确等