Node.js 安全清单

摘要: 前言 安全性,总是一个不可忽视的问题。许多人都承认这点,但是却很少有人真的认真地对待它。所以我们列出了这个清单,让你在将你的应用部署到生产环境来给千万用户使用之前,做一个安全检查。 以下列出的安全项,大多都具有普适性,适用于除了Node.js外的各种语言和框架。

前言

安全性,总是一个不可忽视的问题。许多人都承认这点,但是却很少有人真的认真地对待它。所以我们列出了这个清单,让你在将你的应用部署到生产环境来给千万用户使用之前,做一个安全检查。

以下列出的安全项,大多都具有普适性,适用于除了Node.js外的各种语言和框架。但是,其中也包含一些用Node.js写的小工具。

配置管理

安全性相关的HTTP头

以下是一些安全性相关的HTTP头,你的站点应该设置它们:

Node.js中,这些都可以通过使用Helmet模块轻松设置完毕:

 
  1. var express = require('express');
  2. var helmet = require('helmet');
  3.  
  4. var app = express();
  5.  
  6. app.use(helmet());

Helmet在Koa中也能使用:koa-helmet。

当然,在许多的架构中,这些头会在Web服务器(Apache,nginx)的配置中设置,而不是在应用的代码中。如果是通过nginx配置,配置文件会类似于如下例子:

 
  1. # nginx.conf
  2.  
  3. add_header X-Frame-Options SAMEORIGIN;
  4. add_header X-Content-Type-Options nosniff;
  5. add_header X-XSS-Protection "1; mode=block";
  6. add_header Content-Security-Policy "default-src 'self'";

完整的例子可以参考这个nginx配置。

如果你想快速确认你的网站是否都设置这些HTTP头,你可以通过这个网站在线检查:http://cyh.herokuapp.com/cyh 。

客户端的敏感数据

当部署前端应用时,确保不要在代码中暴露如密钥这样的敏感数据,这将可以被所有人看到。

现今并没有什么自动化检测它们的办法,但是还是有一些手段可以用来减少不小心将敏感数据暴露在客户端的概率:

猜你喜欢

转载自3554661963.iteye.com/blog/2382063