정의
- express사용시 http 헤더 설정을 자동으로 바꿔주어 앱의 취약성으로 부터 앱을 보호할 수 있는 패키지(서버 보안성 향상)
- app.use(hepmet())만 설정할 경우 기본적인 보안(x-powered-by등)만 설정해주며, csp, exprectCt,hpkp,noCache, referrerPplicy는 적용되지 않는다. 이를 적용하려면
app.use(helmet.noCache()); app.use(hepmet.hpkp());
으로 사용
설치
yarn add helmet @types/helmet --save
사용예시
import helmet from 'helmet';
// 기본 11개 미들웨어 사용
app.use(helmet());
// helmet.contentSecurityPolicy 제외한 기본 10개 미들웨어 사용
app.use(
helmet({
contentSecurityPolicy: false // cross-site 허용
})
);
종류
- csp: Content-Security-Policy 헤더 설정. XSS(Cross-site scripting) 공격 및 기타 교차 사이트 인젝션 예방,
url에서 가져온 이미지, 동영상, js, css파일등을 막는 역할을 한다. 설정할때 관련 url을 모두 추가해줘야 한다
- 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 가로채기를 방지.