Ajax
와 POST
요청이 브라우저에서 보이지 않더라도 네트워크 트래픽은 packet
sniffing과 man-in-the-middle attacks에 취약합니다.Nginx
가 TLS
를 다루도록 하는게 좋습니다. Recommended Server Configurations을 참고하세요.Helmet
은 단순히 보안과 관련된 HTTP응답 헤더들을 설정해주는 더 작은
미들웨어들의 모음입니다.npm install --save helmet
// ...
var helmet = require('helmet')
app.use(helmet())
// ...
Helmet
을 사용하고싶지 않다면 적어도 X-powered-By
헤더는 사용하지 못하게
해야합니다. 공격자는 이 헤더를 통해 서버가 Express
로 가 동작하고 있다는걸
알 수 있고 공격을 할 수 있습니다.app.disable('x-powered-by')
express-session
은 express.session
을 대체합니다.cookie-session
은 내장된 express.cookieSession
을 대체합니다.express-session
은 데이터를 서버에 저장하고 session ID만 쿠키에 저장합니다.express-session
으로 저장하는 것이 좋습니다.x-powered-by
헤더 문제처럼 해커가 이를 이용하여 공격 대상으로 지정할 수
있습니다.var session = require('express-session')
app.set('trust proxy', 1) // trust first proxy
app.use(session({
secret: 's3Cur3',
name: 'sessionId'
}))
보안을 위해 다음 옵션들을 설정하는게 좋습니다.
cross-site-scripting
공격을 방지할 수 있습니다.var session = require('cookie-session')
var express = require('express')
var app = express()
var expiryDate = new Date(Date.now() + 60 * 60 * 1000) // 1 hour
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}))
npm audit
을 통해
점검할 수 있습니다.npm audit