我有一个我想限制访问的API。我可以提供访问密钥并根据每个请求进行检查,但我不确定这实际上会走多远。
API由应用程序使用,但它也被Web应用程序使用,有人可以查看其来源。如果他们这样做了,他们就会拥有密钥并且可以轻松地进行API调用。
是否有更可靠的安全访问方式?我不确定这里的标准做法是什么。
编辑:在考虑之后,我可以使用双管齐下的方法。 Web应用程序可以使用POST与CSRF,应用程序可以使用API密钥。任何其他想法,或者这是一个普遍接受的解决方案? (请注意,这仍然不适用于第三方网络应用。)
答案 0 :(得分:1)
您的API永远不会私有,因为我假设的网络应用程序可以向公众开放。如果是这种情况,那么确保没有任何动力来保护它,因为任何人和每个人都可以访问API。
另一方面,如果此Web应用程序仅供注册用户使用,则可以使用令牌系统来检查授权。当用户成功登录时,您会传回一个令牌(通常为20到30个字符长)。每个API请求都需要有效的令牌。如果您的应用程序需要更高的安全阈值,则可以在创建后X小时将令牌设置为自动过期(使用数据库作业)。如果安全性不是一个大问题,那么每次发出请求时都可以自动续订。
这基本上是一种两层方法。为用户生成临时令牌以直接连接到您的API,以便永久性凭据永远不会发送到客户端。预定义的密钥提供给第三方开发人员,他们在API之上构建应用程序并拥有自己的后端。
答案 1 :(得分:0)
如果是您的API,您可以直接执行此操作。
1)将以下代码插入您的API文件
$authToken = "APItoken"; //variables
if( !isset($_REQUEST["authToken"]) || $_REQUEST["authToken"] != $authToken )
die("Need auth token");
2)您现在需要像这样获取/ POST / PUT URL: http://www.yoursite.com/api1.php?authToken=APItoken&nextParam=¶mAfterThat=
如果这有帮助,请将其标记为答案
编辑:
没关系,读错了。几分钟后更新答案。