如何将Web API设为私有

时间:2015-04-05 04:11:58

标签: javascript security rest

我有一个我想限制访问的API。我可以提供访问密钥并根据每个请求进行检查,但我不确定这实际上会走多远。

API由应用程序使用,但它也被Web应用程序使用,有人可以查看其来源。如果他们这样做了,他们就会拥有密钥并且可以轻松地进行API调用。

是否有更可靠的安全访问方式?我不确定这里的标准做法是什么。

编辑:在考虑之后,我可以使用双管齐下的方法。 Web应用程序可以使用POST与CSRF,应用程序可以使用API​​密钥。任何其他想法,或者这是一个普遍接受的解决方案? (请注意,这仍然不适用于第三方网络应用。)

2 个答案:

答案 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=&paramAfterThat=

如果这有帮助,请将其标记为答案

编辑:

没关系,读错了。几分钟后更新答案。