본문 바로가기

보안/시큐어코딩

[HTML5 시큐어코딩] Web Storage 정보 탈취

[작성중.....]


Web Storage


HTML5 이전 버전에서는 클라이언트 측에서 웹애플리케이션관련 컨텐츠를 저장할 때 주로 쿠키를 사용하였다. 하지만 쿠키는 도메인 사이트별로 20개, 4K 크키를 넘을 수 없다는 제약사항이나, 서버로 요청이 날라갈때 마다 해당 도메인에 대한 쿠키값이 모두 포함되어 전달되므로 해서 불필요한 오버헤더, 웹션탈취와 같은 문제점을 야기 시켰다.


Web Storage는 웹사이트와 관련된 컨텐츠를 사용자의 컴퓨터에 저장하고 이후 자바스크립트를 이용하여 접근하여 통제하는 것이 가능하다. 또한 컴퓨터에 저장할 수 있는 용량도 브라우저마다 조금은 다르겠지만 보통 도메인당 5MB 정도의 크기를 사용할 수 있다.


웹 스토리지는 세션 스토리지와 로컬 스토리지로 구분할 수 있다.

Session Storage는 기본적으로 로컬 스토리지와 유사하지만 브라우저 또는 탭을 종료하는 경우 데이터가 삭제된다.

Local Storage는 모든 텍스트값을 저장할 수 있다. key-value쌍으로 구분되어 저장되며, key을 통해 값에 접근할 수 있다. 사용자나 웹애플리케이션에 의해서 생성/삭제 될 수 있으며, 브라우저 종료시에도 값이 삭제되지 않는다.




 [그림2] 세션 스토리지 vs 로컬 스토리지      [출처: Intenet& Security Focus 2013 12월호]



웹스토리지 관련 가장 큰 보안 이슈 해당 영역에 저장되어 있는 데이터에 대한 불법적인 접근을 사용자가 인지 할 수 없다는 것이다. 웹 스토리지에 대한 모든 접근및 제어는 자바 스크립트를 통해 이루어지므로 XSS 등 스크립트 기반의 취약점이 있는 사이트의 경우 공격자는 사용자의 브라우저에 있는 모든 웹 스토리지 데이터를 사용자 모르게 조작하거나 가져 갈 수 있다.  즉 웹 스토리지 자체의 취약점은 아니지만 쿠키에 비해 저장공간이 커 다양한 정보가 저장될 수 있으며, 또한 유출될 수 있다.