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
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!