Helmet.js 란?
Express.js 사용시 Http 헤더 설정을 자동으로 바꾸어주어 잘 알려진 몇가지 앱의 취약성으로 부터 앱을 보호 할 수 있는 패키지이다.
* Helmet는 다음과 같은 미들웨어로 이루어 져 있다.
csp: Content-Security-Policy 헤더 설정. XSS(Cross-site scripting) 공격 및 기타 교차 사이트 인젝션 예방.
hidePoweredBy: X-Powered-By 헤더 제거.
hpkp: Public Key Pinning 헤더 추가. 위조된 인증서를 이용한 중간자 공격 방지.
hsts: SSL/TLS를 통한 HTTP 연결을 적용하는 Strict-Transport-Security 헤더 설정.
noCache : Cache-Control 및 Pragma 헤더를 설정하여 클라이언트 측에서 캐싱을 사용하지 않도록 함.
frameguard : X-Frame-Options 헤더 설정하여 clickjacking에 대한 보호 제공.
ieNoOpen : (IE8 이상) X-Download-Options 설정.
xssFilter : X-XSS-Protection 설정. 대부분의 최신 웹 브라우저에서 XSS(Cross-site scripting) 필터를 사용.
noSniff : X-Content-Type-Options 설정하여, 선언된 콘텐츠 유형으로부터 벗어난 응답에 대한 브라우저의 MIME 가로채기를 방지.
설치 방법
# yarn add helmet @types/helmet --save
사용법
import helmet from 'helmet';
app.use(helmet());
* 주의사항
app.use(helmet()); 만 설정 할 경우 기본적인 보안(X-Powered-By 등)만 설정해 주며
csp, expectCt, hpkp, noCache, referrerPplicy는 적용되지 않는다.
이를 적용하려면 다음과 같이 별도로 설정한다. (각 미들웨어 마다 별도로 설정을 해야한다.)
app.use(helmet.noCache());
app.use(helmet.hpkp());
* 부가사항
csp는 url에서 가져온 이미지, 동영상, js, css파일 등을 막는 역할을 한다. 설정 할때 관련 url을 모두 추가 해 줘야한다.
트위터 같은 경우 csp를 다음과 같이 설정 하고 있다.
참고
'Developments > Node.js' 카테고리의 다른 글
dotEnv를 활용한 환경 변수들 숨기기 (0) | 2019.08.29 |
---|---|
Express.js 에서 session 관리 (0) | 2019.08.27 |
Fetch 대신 Axios (0) | 2019.08.27 |
No Session, Yes JWT! (0) | 2019.08.22 |
Tensorflow.js 설치 (0) | 2019.07.25 |