helmet是一個保護Node.JS應用的安全專案

banq發表於2014-11-15
Helmet是一系列幫助增強Node.JS之Express/Connect等Javascript Web應用安全的中介軟體。

一些著名的對Web攻擊有XSS跨站指令碼, 指令碼注入 clickjacking 以及各種非安全的請求等對Node.js的Web應用構成各種威脅,使用Helmet能幫助你的應用避免這些攻擊。

安裝Helmet:
npm install helmet --save

在Express使用Helmet:

// Load required modules
var express = require('express');
var helmet = require('helmet');

// Create our Express application
var app = express();

// Simple endpoint
app.get('/', function(req, res) {
  res.send('Time to secure your application...');
});

// Start the server
app.listen(3000);
<p class="indent">


Helmet安全功能有:
1crossdomain是用來服務crossdomain.xml

2.contentSecurityPolicy是設定Content Security Policy,防止XSS攻擊。

3.hidePoweredBy可以移除 X-Powered-By 頭部

4.hsts用於 HTTP Strict Transport Security

5.ieNoOpen設定IE8+的 sets X-Download-Options

6.noCache 失效客戶端快取

7.noSniff能避免客戶端進行MIME型別進行嗅探。

8.frameguard阻止clickjacking

9.xssFilter能夠增加一些小的XSS保護功能。

呼叫app.use(helmet());可以預設啟用上述9項功能的7項,排除的兩項是contentSecurityPolicy 和noCache。

使用Content Security Policy (CSP) 防禦XSS攻擊案例程式碼:

// Load required modules
var express = require('express');
var helmet = require('helmet');

// Create our Express application
var app = express();

// Implement CSP with Helmet
app.use(helmet.csp({
  defaultSrc: ["'self'"],
  scriptSrc: ['*.google-analytics.com'],
  styleSrc: ["'unsafe-inline'"],
  imgSrc: ['*.google-analytics.com'],
  connectSrc: ["'none'"],
  fontSrc: [],
  objectSrc: [],
  mediaSrc: [],
  frameSrc: []
}));

// Simple endpoint
app.get('/', function(req, res) {
  res.send('Time to secure your application...');
});

// Start the server
app.listen(3000);
<p class="indent">


具體使用和說明除了參考其Github說明外,還可以參考這篇文章:Protect Your Node App's Noggin With Helmet

相關文章