Oct1a
Node.js进阶-crypto模块之理论篇

一、 文章概述

互联网时代,网络上的数据量每天都在以惊人的速度增长。同时,各类网络安全问题层出不穷。在信息安全重要性日益凸显的今天,作为一名开发者,需要加强对安全的认识,并通过技术手段增强服务的安全性。

crypto模块是nodejs的核心模块之一,它提供了安全相关的功能,如摘要运算、加密、电子签名等。很多初学者对着长长的API列表,不知如何上手,因此它背后涉及了大量安全领域的知识。

本文重点讲解API背后的理论知识,主要包括如下内容:

  1. 摘要(hash)、基于摘要的消息验证码(HMAC)
  2. 对称加密、非对称加密、电子签名
  3. 分组加密模式
Node.js-crypto-diffie-hellman

简介

Diffie-Hellman(简称DH)是密钥交换算法之一,它的作用是保证通信双方在非安全的信道中安全地交换密钥。目前DH最重要的应用场景之一,就是在HTTPS的握手阶段,客户端、服务端利用DH算法交换对称密钥。

下面会先简单介绍DH的数理基础,然后举例说明如何在nodejs中使用DH相关的API。

Node.js-debug-log

前言

在node程序开发中时,经常需要打印调试日志。用的比较多的是debug模块,比如express框架中就用到了。下文简单举几个例子进行说明。

备注:node在0.11.3版本也加入了util.debuglog()用于打印调试日志,使用方法跟debug模块大同小异。

Node.js-debugLog

前言

在node程序开发中时,经常需要打印调试日志。用的比较多的是debug模块,下文简单举几个例子进行说明。

备注:node在0.11.3版本也加入了util.debuglog()用于打印调试日志,使用方法跟debug模块大同小异。

Node.js-express-session-deep-in

写在前面

本文先简单介绍session跟cookie的区别与联系,接着深入剖析express-session中间件的实现。关于express-session的基础使用,可参见笔者前面的文章。

Node.js-https

客户端例子:不受信任的证书

我们知道,有些网站的HTTPS证书会被浏览器标识为不受信任,有可能是以下情况导致的:

  • 颁发证书的机构不在操作系统的受信列表里
  • 办法证书的机构在操作系统的受信列表里,但证书的安全级别不够

比如我们访问12306,chrome就会提示你“您的连接不是私密连接,攻击者可能会试图从kyfw.12306.cn窃取您的信息”。

那么,当我们用node向12306发起请求时,又会是什么状况呢?下面就来试下

Node.js-log4js

对于线上项目用来说,日志是非常重要的一环。log4js是使用得比较多的一个日志组件,经常跟Express一起配合使用。本文从入门实例开始,讲解log4js的使用,以及如何跟Express进行整合。

入门例子

输出日志如下,包括日志打印时间、日志级别、日志分类、日志内容。

// started.js
var log4js = require('log4js');
var logger = log4js.getLogger();
logger.debug('hello world');

// 输出:
// [2017-02-28 21:28:22.853] [DEBUG] [default] - hello world
Node.js-stream

类型:
自定义 ReadStream
自定义 WriteStream
自定义 DuplexStream
自定义 TransformStrem

模式对比:
string/buffer
object mode

缓存:(buffering、highWaterMark)

两种视角:
stream使用
stream实现

Node.js-node8-napi

N-API简介

Node.js 8.0 在2017年6月份发布,升级的特性中,包含了N-API。编写过或者使用过 node扩展的同学,不少都遇到过升级node版本,node扩展编译失败的情况。因为node扩展严重依赖于V8暴露的API,而node不同版本依赖的V8版本可能不同,一旦升级node版本,原先运行正常的node扩展就编译失败了。

这种情况对node生态圈无疑是不利的,N-API的引入正是试图改善这种情况的一种尝试。它跟底层JS引擎无关,只要N-API暴露的API足够稳定,那么node扩展的编写者就不用过分担忧node的升级问题。