2016-08-05 4 views
0

사용자가 팝업 창에서 요소를 클릭했는지 확인할 수 있습니까? 현재이 자바 스크립트를 사용하여 팝업을 열고 닫혔는지 감지합니다.사용자가 팝업 내 요소를 클릭했는지 감지

var win = window.open(url,'','height=500,width=800'); 
var winTimer = window.setInterval(function() 
{ 
    if (win.closed == true) { 
     clearInterval(winTimer); 
    } 
}, 2000); 

예를 들어 YouTube를 팝업 창에서 열고 사용자가 '좋아요'버튼을 클릭했는지 감지하고 싶습니다. 내 간격과 숨겨진 팝업이 감지되면 요소를 클릭하면 어떻게 감지됩니까?

+2

[팝업 창에서 사용자 클릭 이벤트를 감지 할 수 있습니까?] (http://stackoverflow.com/questions/21018298/is-it-possible-to-detect-the-user) -click-event-in-the-popup-window) –

답변

1

도메인이 사이트와 동일한 도메인에서 호스팅되지 않으면 불행히도 cross-domain security 문제가 발생합니다. 당신이 달성하고자하는 것은 (youtube를 통해)이 것을 허용하는 암시적인 API가 없다면이 경우에는 작동하지 않을 것입니다 (Window.postMessage() 참고). wikipedia page for the Same-origin_policy에서

: 동일 출처 정책없이 보안 위험이있을 것이기 때문에

이러한 제한이하는 주된 이유입니다. 사용자가 은행 웹 사이트를 방문 중이며 로그 아웃하지 않는다고 가정합니다. 그런 다음 임의의 다른 사이트로 이동하고 그 사이트에는 은행 사이트에서 데이터를 요청하는 백그라운드에서 실행중인 악의적 인 JavaScript 코드가 있습니다. 사용자는 여전히 은행 사이트에 로그인되어 있기 때문에 악성 코드가 은행 사이트에서 어떤 작업을 수행 할 수 있습니다. 예를 들어 마지막 트랜잭션 목록을 가져오고 새 트랜잭션을 만듭니다. 브라우저가 은행 웹 사이트의 도메인을 기반으로 은행 웹 사이트에 세션 쿠키를 보내고받을 수 있기 때문입니다. 해당 악의적 인 사이트를 방문하는 사용자는 그가 방문하는 사이트에 은행 세션 쿠키에 대한 액세스 권한이 없음을 기대합니다. 이것이 사실이지만, 자바 스크립트는 은행 세션 쿠키에 직접 액세스 할 수 없지만, 은행 사이트의 세션 쿠키를 사용하여 은행 사이트에 요청을 송수신 할 수 있습니다. 이는 기본적으로 은행 사이트의 일반 사용자로 작동합니다. 새로운 트랜잭션의 전송과 관련하여, 은행 사이트의 CSRF 보호조차도 스크립트가 사용자가 수행하는 것처럼 간단하게 수행 할 수 있기 때문에 아무런 효과가 없습니다. 따라서 세션을 사용하거나 로그인해야하는 모든 사이트에서이 점이 중요합니다. 예제 (또는 다른 사이트의 사이트)에서 공개 된 데이터 만 제공하고 아무 것도 트리거 할 수없는 경우 일반적으로 동일 출신 정책이 보호 할 위험 없음. 또한 두 사이트가 동일한 당사자의 통제하에 있거나 서로를 완전히 신뢰하는 경우 위험은 없습니다.

+0

정보를 제공해 주셔서 감사합니다! 잘 나는 팝업의 iframe insteasd를 사용할 수있을 것 같아? –

+0

iframe도 동일한 출처 정책을 사용합니다. 당신이 볼 수 있습니다 [여기] (http://stackoverflow.com/questions/13439303/detect-click-event-inside-iframe),하지만 당신은 두 번째 의견으로 볼 수 있듯이, 당신은 이걸로 갈거야 iframe에도 문제가있다. – FrankerZ

관련 문제