您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>数值算法/人工智能>

怎么在Node应用中实施Web认证

大小:0.3 MB 人气: 2017-10-13 需要积分:1
安全问题正成为Web应用越来越值得关注的问题。在这之前,我们已经讨论了Node.js的安全问题列表。 为了更深入的探讨此类问题,本文将具体谈一谈有关Cookie、Token、以及其他Web认证方法。 本文将中最简单的HTTP基本认证开始谈起,进而会讨论Cookie、Token、签名,以及一次性密码结束。
  HTTP基本认证
  HTTP基本认证是最简单的一种Web认证方法,它通过在构造请求时提供用户名和密码的方式来提供认证。
  之所以说HTTP基本认证是最简单的方法,是因为它不许要借组诸如Cookie,Session,或者其他数据。 如果要使用HTTP基本认证,客户端必须对于每一个构造的请求都要增加Authorization请求头。 用户名和密码可以不加密,但需要按照如下方法进行构造:
  用户名和密码需要拼接为单个字符串,格式为:username:password。字符串需要使用进行编码。在编码的值之前需要使用Basic作为关键字。
  举个简单的例子,假如某个用户的用户名为john,密码为secret:
  curl --header “Authorization: Basic am9objpzZWNyZXQ=” my-website.com
  你可以在Chrome中看到类似的信息
  怎么在Node应用中实施Web认证
  在Node.js中实现HTTP基本认证非常的简单,下面的代码片段展示了如何在Express中使用中间件的方式来实现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(); } return unauthorized(res); }
  当然,你可以在更高层达到这个目的,例如在nginx中进行配置。
  缺点
  这看起来很简单是不是?那么HTTP基本认证的缺点是什么呢?如下:
  每个请求都需要附加用户名和密码后进行发送,即使在使用安全连接的情况下,也会有数据泄漏的可能性。联系到SSL/TLS,如果网站使用的较弱加密方法,或者某个攻击者破解了它,那么用户名和密码会立即被暴露。使用HTTP基本认证无法注销用户的登录状态证书不会过期——你必须要求用户自己来更改密码来达到这一目的

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!