- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在构建需要所有页面登录信息的系统。该应用程序被设计为 Restful 应用程序,使用 codeigniter 作为 Phil Sturgeon 库。该库仅使用 API key 来授权 api 调用,方法是通过 HTTPS 连接发送每个请求。
即使它使用 2 路身份验证或仅 API key 。我搜索了一段时间的是以下场景:
服务器检查信息是否有效:
服务器应将 API KEY 作为由该用户名标识的资源提供给客户端(这是问题???!!!)
如何安全地将API Key发送给客户端?
如果你能举一个例子,这将是一个很大的帮助,因为我发现并阅读了很多文章
:)
最佳答案
由于连接是 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/
我正在尝试为我的用户提供使用 Google 或 Facebook 登录的选项。到目前为止,我找到了一个实现 Google 登录流程的示例,但如果我可以在同一 Activity 中实现类似的 Faceb
我有一个网页,它对用户是否登录很敏感。我使用的是 Google 登录 Javascript SDK。当用户到达此页面时,我想显示一个插页式广告(“正在加载...”),然后 1)如果用户已登录则呈现页面
我用 digitalocean 创建了一个 droplet,并使用 apt install mariadb-server 命令安装了 mariadb。现在我想使用 php 连接到我的服务器,我使用这个
这个问题在这里已经有了答案: Inno Setup - Signing fails with "Sign Tool failed with exit code 0x1" (2 个回答) 3年前关闭。
我正在尝试使用他们的新 API 实现 google 登录:https://developers.google.com/identity/sign-in/web/ 登录和注销工作正常。我的问题是我不知道
我的应用程序具有谷歌登录、Facebook 登录和 braintree 集成。 我已将以下代码放入 appdelegate.swift 中: func application(_ applicatio
我有一个 Flask 应用程序,最近在我的登录/退出表单中实现了 Flask-Login: @account.route('/sign-in', methods=['POST', 'GET']) de
friend 们,我是初学者级别的 ios swift 学习者。我一直在尝试在我的试用应用程序中进行谷歌登录。根据来自谷歌开发人员和其他教程的资源,我成功地使用 UIView 进行了登录。然后我试图在
我正在使用 Ionic 在 Codeigniter/Ion_Auth/codeigniter-restclient 之上构建登录系统,当我尝试从“ionic 服务器”登录时,登录可以正常工作,但对 L
在 Docker 文件中我有这个 FROM ubuntu RUN apt update && apt -y upgrade RUN apt install -y sudo # Setup ops us
对于 Java 开发,我使用 Slf4j 和 Logback。 Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.de
在 Scala 应用程序中进行日志记录的好方法是什么?与语言哲学一致的东西,不会使代码困惑,并且维护成本低且不引人注目。以下是基本要求列表: 简单 不会使代码困惑。 Scala 以其简洁而著称。我不希
我正在尝试将我的登录名转换为 Retrofit2 我的旧 LoginActivity: public class LoginActivity extends Activity { private st
我正在尝试让 google+ 登录在 android 上运行。我的问题是,每当我使用 eclipse 运行它时,google 开发站点上提供的示例都能完美运行。当我签署 apk 并在我的设备上手动安装
这个问题已经有答案了: JS Simple but Safe Login? [closed] (1 个回答) 已关闭 6 年前。 我正在尝试使用 JavaScript 创建登录页面。它实际上只是一个带
其他章节请看: react 高效高质量搭建后台系统 系列 登录 本篇将完成 登录模块 。效果和 spug 相同: 需求 如下:
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 1 年前。
我在使用 ReactJs 中的 facebook-login 组件时遇到问题,代码与文档中的完全一样,但仍然无法正常工作。你能帮我找出我做错了什么吗? import React, { Componen
我有一个项目,其中包含许多具有自己的日志记录的“工具”类。这些日志文件是在应用程序启动时创建的,但在使用之前一直为空。 是否可以告诉logback在启动时不应该创建空文件?但是仅在使用它们时? 不知何
我正在创建一个需要用户授权才能访问某些功能的网站。我目前正在研究用户如何创建帐户以及如何利用 session 来授权他们的登录。用户信息存储在名为 user 的 MySQL 表中,其中可能包括用户名和
我是一名优秀的程序员,十分优秀!