Helmet에 대해 알아보자

2020. 11. 12. 10:42npm library

Express의 성능 및 보안을 블로깅하면서 대게 사용해보지 않거나, 모르는 것들이 많았다. 그래서 하나하나 npm을 통해 어떤 것인지 확인해보고자 한다.

 

npm helmet을 검색해 사이트를 들어가면 가장 위에 이런 문구가 있다.

 

Helmet helps you secure your Express apps by setting various HTTP headers. 
It's not a silver bullet, but it can help!

 

HTTP 헤더를 설정해서, Express 보안을 해 준다는 것이다. 사용방법은 그냥 사용하는 방법과 옵션을 설정해 사용하는 두가지가 있는데, 미들웨어답게 사용법은 편리하다.

 

app.use(helmet())

 

위의 방법이 기본적인 사용방법이며, 옵션으로는 다음과 같은 것들이 있다. 더 자세한 것들을 알고 싶다면 helmet 사이트와 mdn의 내용을 같이 섞어서 보면 좋을 것 같다.

 

  • contentSecurityPolicy : CSP라 불리는 콘텐츠 보안 정책은 XSS나 Data Injection과 같은 공격으로부터 보호하기 위해 만들어졌다.
  • expectCt : 잘못 사용된 SSL 증명서를 완화합니다.
  • referrerPolicy : 헤더를 기본 주소로만 보낼 수 있습니다. (rest api를 사용하면 보통 전체가 날라갑니다.)
  • hsts : 브라우저가 보다 안전한 https를 http보다 선호하도록 설정합니다.
  • noSniff : MIME 타입 스니핑을 설정하여 보안 취약점을 완화합니다.
  • dnsPrefetchControl : X-DNS-Prefetch-Control 헤더를 설정하여 DNS Profetching을 도와주는데 이는 확장된 작업, 실행으로부터 사용자 보안을 강화합니다.
  • ieNoOpen : 잠재적으로 안전하지 않은 다운로드를 저장하고, 사이트 콘텐츠에서 HTML을 완화합니다. Explorore 8과 같은 곳을 예로 볼 수 있습니다.
  • frameguard : ClickJacking을 완화하는데 도음을 주며, X-Frame-Option을 설정합니다.
  • permittedCrossdomainPolicies : X-Permitted-Cross-Domain_Policies 헤더를 설정하여 도메인 간 콘텐츠 로드에 대한 정책을 알려줍니다.
  • hidePoweredBy : Express와 같이 X-Powered-By가 기본으로 설정되어 있는 것을 제거합니다.
  • xssFilter

개인적으로 이런 것들 안에 있는 세부적인 내용까지 다 습득하려면 하루 이틀만으로는 부족한 것 같다. 그렇기 때문에 필요할때마다 조금씩 찾아보면서 설정을 해보는 것도 괜찮을 것이다.