gpt4 book ai didi

codeigniter - REST API登录方式

转载 作者:行者123 更新时间:2023-12-02 01:03:47 25 4
gpt4 key购买 nike

我们正在构建需要所有页面登录信息的系统。该应用程序被设计为 Restful 应用程序,使用 codeigniter 作为 Phil Sturgeon 库。该库仅使用 API key 来授权 api 调用,方法是通过 HTTPS 连接发送每个请求。

即使它使用 2 路身份验证或仅 API key 。我搜索了一段时间的是以下场景:

  • 用户首次请求应用程序(例如:https://www.xyz.com),然后它将被重定向到登录页面以检查凭据
  • 用户输入用户名/密码并通过 https 通过 POST 发送
  • 服务器检查信息是否有效:

    • 服务器应将 API KEY 作为由该用户名标识的资源提供给客户端(这是问题???!!!)

    • 如何安全地将API Key发送给客户端?

      • 1) 我可以使用 session cookie 并在 cookie 中恢复 API key ,然后在每个即将到来的请求中使用此 API key (这对其余的无状态来说是暴力的,我不确定如果足够安全的话)。
      • 2)其实我不知道其他选择:)轮到你帮忙了

如果你能举一个例子,这将是一个很大的帮助,因为我发现并阅读了很多文章

:)

最佳答案

由于连接是 HTTPS,因此您通过线路发送的任何内容都是安全的(理论上并且前提是您没有被 mitm 'd)。不确定整个 API 是否通过 HTTPS 提供服务(您没有指定),因此即使您可以在登录过程中返回 key (同时仍在 HTTPS 保护下),但如果 api 的其余部分不是通过 HTTPS 提供服务HTTPS,可以在下一个请求时嗅探 key 。

session 和 cookie 通常不是 RESTful 应用程序的一部分; REST 是无状态的。

像旋转 key 这样的东西对于非 HTTPS 来说会更好(也可以与 HTTPS 一起使用)。您通过 HTTPS 登录,服务器返回 api key ,您在下一个请求中使用它,服务器返回新的 api key ,您在下一个请求中使用它,依此类推。虽然它比非 HTTPS 上的单个 api key 更好,但它并不完美。如果有人嗅探后续请求之一的响应,并且您最终没有使用该 key ,他们就可以使用它。这会将攻击向量缩小为从服务器到客户端的非 HTTPS 响应,因为如果嗅探从客户端到服务器的请求,则 api key 将已被您的合法请求消耗。但是,如果您不通过 HTTPS 提供 API,则需要采取更多措施来保护 API。

如果是我,我会研究请求签名 + https。这里有一些关于请求签名的讨论:https://stackoverflow.com/a/8567909/183254

http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/保护 API 部分中还有一些有关摘要身份验证的信息

客户端js函数伪代码示例

function get_calendar(){
var key = $('#api_key').value();
$.ajax({
type: 'get',
url: '/index.php/api/calendar?key=' + key,
success: function(response){
// show calendar
// ...
// set received api key in hidden field with id api_key
$('#api_key').value(response.api_key)
}
})
}
<小时/>

Controller 方法示例:

function calendar_get($api_key = ''){
if($api_key_matches){//verify incoming api key
$r = array();
$r['calendar'] = $this->some_model->get_calendar();
$r['api_key'] = $this->_generate_api_key();// generate or get api key
}
$this->response($r);
}

关于codeigniter - REST API登录方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com