我创建了一个只能由某些客户端应用程序访问的API。 这些应用程序的用户不一定必须登录才能使用客户端应用程序。我将分发API密钥,但这些密钥在客户端应用程序上可见,因此它们也可以被其他应用程序使用(?)。
有没有办法确保请求来自特定的客户端应用程序,例如因为它们托管在某个域上?我猜原始标题很容易被欺骗。
答案 0 :(得分:0)
API密钥通常用于向服务器验证应用程序。您不是在说什么类型的客户端(本机,Web应用程序,JavaScript?)您是正确的,如果该客户端具有相同的权限(在相同的安全性下运行),客户端上的另一个应用程序可能会读取API密钥context)作为你的客户。
您可以使用client certificates让应用程序识别自己。但这可能是一个非常严厉的解决方案,具体取决于您尝试缓解的安全线程。即使在这里,同一安全上下文中的应用程序也可以访问私钥。
HTTP请求中的所有其他信息都很容易被伪造。