HAR(HTTP Archive format) 포맷과 앞으로의 개발 계획

오늘은 뭔가 기술적인 이야기보단, 그냥 제가 최근에 급 관심이 생긴 HAR 포맷에 대해 이야기할까 합니다.

HAR

HAR(HTTP Archive format)는 웹 브라우저과 웹 사이트의 interaction을 로깅하기 위한 목적으로 만들어진 JSON 기반의 포맷입니다. 이는 브라우저와 웹 서비스에서의 성능 측정 정보를 내보내기 위한 목적으로 만들어졌고 Chrome, Firefox, Postman 등 메이저 도구들에서 지원하고 있습니다.

  • Charles Proxy
  • Fiddler
  • Firebug
  • Firefox
  • Google Chrome
  • IE
  • Microsoft Edge
  • Postman
  • OWASP ZAP
  • Etc..

왜 관심가지나요?

HAR의 존재는 오래되기도 했고 저도 분석할 때 브라우저의 개발자 도구에서 많이 봤던 상태라 알고는 있었습니다. 다만 이게 시큐리티 관점에서 사용할 일이 있지는 않았던 것 같습니다. 우리가 보안 테스팅을 하더라도 ZAP이나 Burpsuite를 같이 사용하기 때문에 이러한 정보를 굳이 저장할 필요가 없었지요.

다만 최근에 authz0, 그리고 아직 릴리즈하지 않은 새로운 프로젝트를 진행하면서 HTTP Requset 정보를 어떻게 저장하고 도구간에 교류하고 사용할지 고민이 많았었습니다. 그리고 그 고민 끝에는 디테일한 정보를 담을 수 있는 포맷(표준화라고 보는게 맞겠죠?)인 HAR가 있었고 이를 통해서 Request 정보를 처리하게 되었습니다.

HAR를 사용함으로써의 이점

위에서 HTTP Request/Response를 저장하는 방법에 대한 이야기를 했죠. 사실 HTTP 자체가 이미 좋은 표준입니다. 직관적으로 Method, URL, Header 등을 알 수 있죠.

GET / HTTP/1.1
Host: www.hahwul.com

다만 HTTP 자체가 비 연결형 커넥션이라는 특징을 가지기 때문에 HTTP Request/Response는 여러번의 요청을 기록하는데 적합하지 않습니다. 그래서 도구들 간 여러개의 Request/Response를 서로 공유하기 위해선 단순히 Raw HTTP를 사용하기 어렵습니다.

HAR는 이러한 점을 채워줍니다.

앞으로의 계획

먼저 제가 만들었던 도구들은 전체적으로 HAR 포맷을 지원할 계획입니다. 잘 구성된다면 Pipeline을 통한 도구간의 상호 작용보다 조금 더 디테일한 작업에선 큰 효과를 발휘할거라 믿습니다.

References

  • https://en.wikipedia.org/wiki/HAR_(file_format)
  • https://www.keycdn.com/support/what-is-a-har-file