Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
限制客户端应用程序从某些域访问API_Api_Security_Authentication_Cors - Fatal编程技术网

限制客户端应用程序从某些域访问API

限制客户端应用程序从某些域访问API,api,security,authentication,cors,Api,Security,Authentication,Cors,我创建了一个只能由某些客户端应用程序访问的API。 这些应用程序的用户(不一定)必须登录才能使用客户端应用程序。我将分发API密钥,但这些密钥将在客户端应用程序上可见,因此其他应用程序也可以使用它们(?) 有没有办法确保请求来自特定的客户端应用程序,例如,因为它们托管在某个域上?我猜源文件头很容易被伪造。API密钥通常用于向服务器验证应用程序。您没有说您使用的是哪种类型的客户端(本机、web应用程序、JavaScript?),如果该客户端与您的客户端具有相同的权限(在相同的安全上下文中运行),则

我创建了一个只能由某些客户端应用程序访问的API。 这些应用程序的用户(不一定)必须登录才能使用客户端应用程序。我将分发API密钥,但这些密钥将在客户端应用程序上可见,因此其他应用程序也可以使用它们(?)


有没有办法确保请求来自特定的客户端应用程序,例如,因为它们托管在某个域上?我猜源文件头很容易被伪造。

API密钥通常用于向服务器验证应用程序。您没有说您使用的是哪种类型的客户端(本机、web应用程序、JavaScript?),如果该客户端与您的客户端具有相同的权限(在相同的安全上下文中运行),则该客户端上的另一个应用程序可以读取API密钥,这是正确的

您可以使用它来标识应用程序本身。但这可能是一个相当严厉的解决方案,取决于您试图缓解的安全线程。即使在这里,相同安全上下文中的应用程序也可以访问私钥


HTTP请求中的所有其他信息都很容易伪造。

谢谢,客户端应用程序将是JavaScript。那么,我说的对吗?没有真正的解决方案,因为即使使用客户端证书,私钥也会是可见的?对,在大多数操作系统上,应用程序都是在用户的安全上下文中运行的。这意味着应用程序可以访问允许用户访问的资源(文件/套接字/数据库)。因此,在相同安全上下文中运行的其他应用程序将可以访问相同的资源。但是JavaScript应用程序根本无法访问密钥存储,因为它们在沙箱中运行。