2012-01-27 2 views
1

오프 사이트 타사 위젯에 대한 스크립트 중 하나가 실행 중에 중단되고 내 홈페이지의 모든 트래픽이 리디렉션되었습니다.리디렉션하는 타사 스크립트에 대한 글로벌 인터셉터

나는 그들을 죽일 수 없으므로 스크립트를 죽이거나 브라우저를 리디렉션하기 위해 제 3자가 JavaScript를 시도 할 수있는 방법을 찾아 낼 것입니다. 내가 찾은 가장 유망한 이벤트는 .unload()window.onbeforeunload이며, 제 생각에는 GET 요청을 검사 한 다음 내 페이지의 유효한 링크와 일치하지 않는 것으로 URL을 확인하는 것입니다. 이벤트가 GET 가치를 얻는 방법은 페이지의 클릭이나 액션에 국한되지 않고 제 3 자의 .js에서 가짜 또는 기타가 발생하는 것을 고려해야합니다.

아무도 이런 식으로 해결책을 찾지 못했습니까?

+0

리디렉션되지 않도록 타사 위젯을 패치하지 않는 이유는 무엇입니까? 나는 자바 스크립트의 다른 일부가 window.location을 설정할 수있는 모든 장소를 "검증"하는 방법이 없다고 생각합니다. – jfriend00

+0

은 엔터프라이즈 급 애플리케이션을위한 제 3 자의 독점적 인 웹 서비스 인터페이스이기 때문에 실제 리다이렉트하지는 않으며 인시던트 보고서는 다음과 같이 나타납니다. "무슨 일이 일어 났는지 또는 수백만 명의 사용자가 우리 홈페이지로 리디렉션 된 이유는 알 수 없습니다. 오후에 "제 3 자 서비스를 위해 앞으로도 다시 일어나지 않도록 노력하고 있습니다. – HansOg

답변

0

제 3 자 자바 스크립트가 window.location을 설정하여 리다이렉션을 일으키고 프리 플라이트 할 수있는 가능한 모든 장소를 가로 챌 수있는 방법이 없습니다. 메소드가 아니며 대체/대체 할 메소드가 없습니다.

페이지 언로드 이벤트는 사용자에게 실제로이 페이지를 나가기를 요청할 수있는 기회를 제공하지만 새 페이지 대상에 대한 액세스 권한이 없습니다.

내가 생각할 수있는 유일한 사실은 기본값이 false 인 부울을 포함하는 전역 변수를 유지하는 것입니다. 코드에서 페이지를 변경할 수있는 모든 가능한 위치에서이 부울을 true로 설정합니다. onbeforeunload 핸들러에서 전역 변수를 검사하여 코드가 수행 한 작업인지 여부를 확인합니다. 코드가 아닌 경우 onbeforeunload에서 메시지를 반환하므로 실제로 이탈 여부를 묻는 메시지가 표시됩니다. 그러나, 당신은 그것을 막을 수 없습니다 (이것은 의도적으로 브라우저 디자인입니다). 그들이 프롬프트에 '예'라고 대답하면 페이지를 새로운 목적지로 남겨 둡니다.

타사가 실수로 리디렉션을 일으킨 이유를 실제로 파악할 수 있다면 상황이 다시 발생하지 않도록 집중할 수 있지만 그 정보는 제공하지 않았을 수 있습니다. 우리는 정말 그걸 도울 수 없습니다.

+0

의도적으로 스크립팅에 대한 해결책을 논의하지 않은 경우, 실행 중에 리디렉션 될 수있는 제 3 자의 문제를 완화하기위한 아이디어가 필요합니다. 미안해. 귀하의 답변에 감사드립니다! 전 프론트 엔드에서 보편적 인 출구 경비원을 만들면 좋겠지 만, 그런 솔루션을 구현하는 실용성은 현재로서는 나에게 적합하지 않습니다. – HansOg