2014-04-04 2 views
0

은행과 같은 보안상의 목적으로 브라우저의 여러 탭을 열어야하는 사용자를 제한해야합니다. 사용자가 브라우저의 단일 탭에서만 작업을 수행하기를 원합니다.작업을 수행하는 동안 브라우저에서 여러 개의 탭을 열 때 사용자를 제한하는 방법은 무엇입니까?

여러 탭을 열려고하면 해당 사용자 ID가 강제로 로그 아웃되어야합니다.

나는 이것을 수행하는 방법을 모른다.

이 작업을 수행하는 데 도움이 될만한 정보를 알려주십시오.

미리 감사드립니다.

+0

이 보안상의 이점은 무엇입니까? – Greg

답변

0

먼저 다른 사용자와 동의해야합니다. 하나 이상의 탭을 열어 놓은 사람이 보안 문제인 경우 문제가 발생합니다. 큰 문제.

그러나 여전히 정말 이렇게 할 경우 :

사용자가 로그인 할 때 :

:

이제
// Must be a string 
var dateTimeStamp = "" +new Date().getTime(); 

// This one can be seen by all windows/tabs 
localStorage.setItem("timeKey", dateTimeStamp); 
// This one can only be seen by the current window/tab 
sessionStorage.setItem("timeKey", dateTimeStamp); 

, 페이지가로드, 그냥 확인하면 두 값이 일치하는 경우

var localKey = localStorage.getItem("timeKey"); 
var sessionKey = sessionStorage.getItem("timeKey"); 

// If there is a key: 
if (localKey) { 
    if (localKey !== sessionKey) { 
    // Handle multiple login here? Redirect to login page? 
    // Complain about tab? 
    } 
} 

그런 다음 사용자가 로그 아웃하면 두 키를 모두 제거해야합니다.

localStorage.removeItem("timeKey"); 
sessionStorage.removeItem("timeKey"); 

경고 :

코딩 이런 종류의 비트 취약하고 의심의 여지가 내가 놓친 가장자리 경우가 있습니다.

추가 신용

그것은 localStorage에 대한 변경 사항을 모니터링하고 누군가가 새로운 탭에 로그인하면 로그 아웃 다른 모든 페이지를 강제 할 수 있습니다.

관련 문제