문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 XSHM (문단 편집) == 원리 == XSHM 공격은 최근에 들어서 출몰하기 시작하였다. [[광고]]를 통한 비즈니스 모델이 생긴 [[2010년대]]부터 유행하기 시작하였는데, 광고로 수익을 내는 사이트 운영자가 사용자들이 보다 많은 광고를 접하도록 유도하여 페이지 뷰를 늘려 자신들의 광고 수익을 늘리는 하는 방법을 모색하게 되었다. 결국 공격 대상자의 컴퓨터에 악성코드를 심지 않고도 다음과 같이 웹에서 동작하는 스크립트만으로 사이트 방문자들의 브라우저를 조작하는 기법이 생기게 되었다. ||'''1'''. 사용자가 '''사이트 A'''에서 '''사이트 B'''로 이동한다. 이때 최근 히스토리는 '''A → B'''로 되어있다. '''2'''. '''사이트 B'''에서 악의적인 스크립트를 통해 사용자의 최근 히스토리를 '''A → C → B'''로 조작한다. '''3'''. 사용자가 뒤로가기를 할 경우에 '''사이트 A''' 대신에 '''사이트 C'''가 보인다. || ||<#000000> {{{#FFFFFF '''XSHM''' 공격이 진행되는 과정}}} || ||'''1'''. 사용자가 '''사이트 A'''에서 '''사이트 B'''로 이동한다. 이때 최근 히스토리는 '''A → B'''로 되어있다. '''2'''. '''사이트 B'''에서 악의적인 스크립트를 통해 사용자의 최근 히스토리를 '''A → C → D → B'''로 조작해서 '''사이트 D'''에 광고를 넣고 '''사이트 C'''에 브라우저의 앞으로가기 버튼을 누른 효과를 주는 [[납치태그]] 혹은 '''사이트 D'''로 이동하는 [[리다이렉트]]를 넣는다. '''3'''. 이 경우 뒤로가기로는 광고가 있는 '''사이트 D'''를 빠져나가지 못한다. || ||<#000000> {{{#FFFFFF '''XSHM''' 공격이 진행되는 과정 2}}} || 위와 같은 스크립트를 짜기 위하여 [[jQuery]]와 [[HTML5]]에서 정의된 히스토리 API를 사용한다. 히스토리 API에 있는 pushState() 함수와 replaceState() 함수를 사용하여 사용자의 히스토리를 변조할 수 있다. 이러한 함수가 포함된 스크립트를 웹 사이트에 포함시켜 사용자의 브라우저를 후킹하게 된다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기