当前位置:首页 > AI娱乐 > 正文内容

nginx check status 在Node应用中实施Web认证的四大方法

admin3天前AI娱乐7

nginx check status 在Node应用中实施Web认证的四大方法

本文翻译自网站 撰写的《Web 》一文,感谢景庄对该文章的翻译。

安全问题正成为Web应用越来越值得关注的问题。在这之前,我们已经讨论了 Node.js的安全问题列表。 为了更深入地探讨此类问题,本文将具体谈一谈有关、Token、以及其他Web认证方法。 本文将从最简单的HTTP基本认证开始谈起nginx check status,进而会讨论、Token、签名,以及一次性密码结束。

HTTP基本认证

HTTP基本认证是最简单的一种Web认证方法,它通过在构造请求时提供用户名和密码的方式来提供认证。

之所以说HTTP基本认证是最简单的方法,是因为它不许要借组诸如,,或者其他数据。 如果要使用HTTP基本认证,客户端必须对于每一个构造的请求都要增加请求头。 用户名和密码可以不加密,但需要按照如下方法进行构造:

举个简单的例子,假如某个用户的用户名为johnnginx check status 在Node应用中实施Web认证的四大方法,密码为:

curl --header "Authorization: Basic am9objpzZWNyZXQ=" my-website.com  

你可以在中看到类似的信息:

在Node.js中实现HTTP基本认证非常的简单,下面的代码片段展示了如何在中使用中间件的方式来实现HTTP基本认证:

import basicAusth from 'basicAuth';
function unauthorized(res) {
    res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
    return res.send(401);
}
export default function auth(req, res, next) {
    const {name, pass} = basicAuth(req) || {};
    if (!name || !pass) {
        return unauthorized(res);
    }
    if (name === 'john' && pass === 'secret') {
        return next;
    }

nginx check status 在Node应用中实施Web认证的四大方法 第1张

return unauthorized(res); }

当然,你可以在更高层达到这个目的,例如在 nginx中进行配置。

缺点

这看起来很简单是不是?那么HTTP基本认证的缺点是什么呢?如下:

对于服务器而言,当它需要对接收到的HTTP请求进行响应时nginx check status 在Node应用中实施Web认证的四大方法,可以在响应头中添加Set-头。 浏览器会将该信息存放到一个容器中,如果设置在头中的请求源相同的话,那么每次请求都会附带有该信息。

可以使用来实现认证,但关键的准则需要遵守:

1. 始终使用

为了尽可能的避免XSS工具,在设置时需要始终使用标记。通过这种方式,将不会在客户端调用.中显示出来。

2. 始终使用被签名的 ( )

通过使用签名的,可以在服务器端检测是否在客户端被修改过。

我们这个也可以在中查看到到这个信息。首先让我们来看看服务器中是如何设置的:

这之后,所有的请求都使用为指定域设置的(上面设置的域为=.;):

缺点

如今JWT(JSON Web Token)随处可见——这里仍然有必要看看这其中潜在的安全问题。

我们首先来看下什么是JWT。JWT包括三个部分:

HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

在Koa应用中加入JWT只需要几行代码:

var koa = require('koa');
var jwt = require('koa-jwt');
var app = koa;
app.use(jwt({
    secret: 'very-secret'
}));
// protected middleware
app.use(function * {

nginx check status 在Node应用中实施Web认证的四大方法 第2张

// content of the token will be available on this.state.user this.body = { secret: '42' }; });

示例用法(检查token的有效性或内容,可以使用 jwt.io)

curl --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" my-website.com  

正如前面所说的那样,在中也可以看到的内容:

如果你正在为原声移动应用或者SPA编写API的话,JWT会是一个非常不错的选择。有一点需要记住的是: 在浏览器中使用JWT你需要将它存在或者中,但这可能会导致XSS攻击。

缺点

如果要 避免XSS攻击需要额外的工作。

签名

无论是使用还是Token,如果某种原因导致你的传输层被暴露的话,你的证书很容易被获取到, 攻击者很容易利用你的或Token来伪装成你的真实身份。

解决该问题的一个可行方案是对请求进行签名,这里主要讨论的是API而不是浏览器来对请求签名。这是如何工作的呢?

当一个API的某个消费者准备构造请求时它必须提供签名,也就是说它必须使用私钥来对整个请求创建哈希。 对于这个哈希计算你可能会使用到:

为了确保它能够正常工作nginx check status,API的消费者和创建者都需要拥有相同的私钥。一旦你获得了签名nginx check status,你需要将它附加到请求中, 可以使用查询字符串,也可以采用HTTP头的形式。当然最好在附加一个日期信息,通过日期来定义签名的过期时间。

为什么需要经历这些步骤?因为即使传输层被破解,攻击者也只能读取你的流量信息,而不能伪装成你的用户帐号, 如果攻击者没有私钥,攻击者就无法对请求进行签名。绝大部分的AWS服务使用的都是这种认证方法。

node-http-模块提供了对HTTP请求签名的支持。

缺点

无法在浏览器或者客户端使用,只能在API之间使用。

一次性密码 One-Time

一次性密码算法使用一个共享的密钥和当前的时间或者计数器来生成一次性密码:

这些方法可以用在使用双因素认证的应用中:当用户如键入用户密码和密码的时候,在服务器和客户端都会生成一次性密码。

在Node.js中,可以使用 notp模块来轻松的实现一次性密码。

缺点如何选择Web认证方法

如果你只是用来支持一个Web应用,使用或者Token都可以,使用的时候你需要考虑XSRF, 使用JWT时你需要考虑XSS。如果你需要同时支持Web应用和移动应用,使用支持基于token认证的API。 如果你构建的API会进行彼此通信,使用请求签名。

译者简介:景庄,前端工程师,关注Node.js、前端工程化。个人博客:。

欢迎加入CSDN前端交流群2:,进行前端技术交流。

加入微信交流群:************ ,请猛戳这里→点击入群

扫描二维码推送至手机访问。

版权声明:本文由前沿科技娱乐汇发布,如需转载请注明出处。

本文链接:https://kejiyl.com/post/3916.html

分享给朋友:

“nginx check status 在Node应用中实施Web认证的四大方法” 的相关文章

利用 AI 技术为游戏增添独特的文化元素

利用 AI 技术为游戏增添独特的文化元素

在当今数字化的时代,游戏已经成为人们生活中不可或缺的一部分。而随着 AI 技术的不断发展,它为游戏行业带来了前所未有的变革和机遇。其中,利用 AI 技术为游戏增添独特的文化元素,成为了游戏开发者们追求的目标之一。AI 技术可以通过对大量的文化数据进行学习和分析,提取出各种文化元素的特征和内涵。这些文...

AI 生成音乐的个性化定制功能深度探索

AI 生成音乐的个性化定制功能深度探索

在当今数字化的时代,音乐创作与体验正经历着一场前所未有的变革,AI 生成音乐的个性化定制功能成为了这一变革的重要标志。它犹如一把神奇的钥匙,开启了音乐创作与欣赏的全新大门,让每一个人都能成为音乐的创造者和主宰者。AI 生成音乐的个性化定制功能基于先进的机器学习算法和海量的音乐数据。通过对大量音乐作品...

AI 生成音乐平台大盘点,哪个才是你的创作神器?

AI 生成音乐平台大盘点,哪个才是你的创作神器?

在当今数字化的时代,音乐创作已经不再局限于传统的乐器演奏和声乐演唱。随着人工智能技术的飞速发展,AI 生成音乐平台应运而生,为音乐创作者们提供了全新的创作工具和灵感源泉。这些平台利用机器学习和深度学习算法,能够生成各种各样的音乐风格,从古典到现代,从摇滚到电子,满足了不同创作者的需求。那么,在众多的...

AI 作曲大揭秘:如何一键生成热门旋律

AI 作曲大揭秘:如何一键生成热门旋律

在当今数字化的时代,音乐创作领域正经历着一场前所未有的变革。人工智能(AI)技术的快速发展,使得一键生成热门旋律成为了可能。这一神奇的技术不仅让音乐创作变得更加便捷,也为音乐爱好者和专业音乐人带来了全新的创作体验。那么,AI 究竟是如何实现一键生成热门旋律的呢?让我们一起来揭开这背后的神秘面纱。AI...

游戏设计新潮流:AI 助力打造沉浸式虚拟世界

游戏设计新潮流:AI 助力打造沉浸式虚拟世界

在当今的游戏设计领域,一场前所未有的新潮流正在悄然兴起,那就是借助 AI 的力量打造沉浸式的虚拟世界。这不仅是技术的突破,更是对游戏体验的一次性提升。AI 作为一种强大的工具,为游戏设计带来了诸多前所未有的可能性。传统的游戏设计往往依赖于开发者的创意和编程技巧,而 AI 则能够在游戏世界中模拟出更加...

游戏设计中 AI 如何打造个性化的游戏剧情

游戏设计中 AI 如何打造个性化的游戏剧情

在游戏设计的领域中,AI(人工智能)正逐渐成为打造个性化游戏剧情的关键力量。随着技术的不断进步,AI 能够模拟人类的思维和行为,为玩家创造出独一无二的游戏体验。AI 可以通过学习玩家的行为和偏好来生成个性化的剧情。在游戏过程中,AI 会密切关注玩家的每一个选择、行动和决策。通过对这些数据的分析,AI...