ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 대기열 우회 + 개발자 도구 감지 우회
    메모 2023. 10. 12. 19:10

    몇 년 전부터 유행하던 코드인데 지금까지 아무런 대책이 없다.

    그냥 쓸 사람은 쓰라는 느낌이다.

     

     

     

    1. 대기열 우회

     

    개발자 도구 - 콘솔에서

    NetFunnel.gControl.next.success({}, {data:{}})

     

     

     

     

    2. 개발자 도구 모음 여는 법

     

    개발자 도구 감지하는 코드는 keydown 입력을 감지하는데  대개 F12 키만 감지를 하는 곳이 많다.

    어떤 기능을 하는 코드가 있으면 같은 코드를 재탕해서 쓰는 경우가 많은데

    개발자 도구 감지 역시 같은 코드를 복붙한거라 개선된게 없다.

     

    단축키 Ctrl + Shift + i 또는 Ctrl + Shift + c를 누르면 개발자 도구 창이 열린다.

    기존 코드는 마우스 우클릭을 막거나 F12 키가 눌렸는지만 확인하기 때문이다.

     

    인증 확인하는 부분도 [ authCheck.value="Y" ] 콘솔 창 입력을 통해 우회가 가능하다고 한다.

    input hidden 태그를 js에서 만든 뒤 append한 것이 아니라

    form 태그 안에 input hidden 태그를 만들어서 랜더링 한 페이지라면

    개발자 도구를 통해 value를 변경할 수 있다. 이것 역시 오래 된 방법이다.

     

     

    자료를 찾던 도중 좋은 블로그를 찾았다.

     

     

    https://graykang.tistory.com/121

     

    크롬 개발자 도구 차단 2, Detect browser developer tools by javascript 2(chrome, firefox, Edge)

    개발자 도구 사용을 막는 방법에 대해 글을 하나 남겼었다 결론은 막지 못한다로 마무리를 지었지만... ㅎㅎ 계속 파다 보니 해결 방법을 찾아냈다... 물론 내가 만든 소스 코드는 아니고 여기저

    graykang.tistory.com

     

     

     

    F12키를 포함해서 단축키 Ctrl + Shift + i와 Ctrl + Shift + c 키가 눌렸을 때도 반응하는 코드이다.

     

    $(document).ready(function(){
        //마우스 우측 버튼 사용 막기.
        if (window.addEventListener) {
            window.addEventListener('contextmenu', function(e) {
                try {
                    if (typeof e != 'undefined') {
                        e.preventDefault(); return false;
                    } else {
                        return false;
                    }
                } catch(e) {}
            } , false);
        } else {
            window.attachEvent('oncontextmenu', function(e) {
                try {
                    if (typeof e != 'undefined') {
                        e.preventDefault(); return false;
                    } else {
                        return false;
                    }
                } catch(e) {}
            } );
        }
        var handlemouseEvent = function(e) {
            try {
                if (typeof e == 'undefined') {
                    if (window.event.button && window.event.button == "2") {
                        return false;
                    }
                } else if ((e.which && e.which == 3) || (e.button && e.button == 2)) {
                    e.preventDefault();
                    return false;
                }
       
            } catch (e) {}
        };
        window.onkeydown = handlemouseEvent;
        window.onkeyup = handlemouseEvent;
       
        //로그아웃 시켜버릴 임시 form 생성
        var logOutFrom = document.createElement('form');
        logOutFrom.name= "logOutFrom";
        logOutFrom.id= "logOutFrom";
        logOutFrom.action = ctx+"/logout";
        logOutFrom.method= "POST";
        var input = document.createElement('input');
        input.type = 'hidden';
        input.name = '${_csrf.parameterName}';
        input.value = '${_csrf.token}';
        logOutFrom.appendChild(input);
        document.body.appendChild(logOutFrom);

        //개발자도구 실행 감지.
        console.log(Object.defineProperties(new Error, {
            toString: {
                value() {
                    (new Error).stack.includes('toString@') && alert('Safari devtools')
                }
            },
            message: {
                get() {
                    //개발자도구를 감지하면 그냥 홬 로갓 키겨 버리자.
                    logOutFrom.submit()
                }
            },
        }));

     });
     
    // Detect Key Shortcuts f12 및 특수키 조합 막기
    window.addEventListener('keydown', function(e) {
        if (
            // CMD + Alt + I (Chrome, Firefox, Safari)
            e.metaKey == true && e.altKey == true && e.keyCode == 73 ||
            // CMD + Alt + J (Chrome)
            e.metaKey == true && e.altKey == true && e.keyCode == 74 ||
            // CMD + Alt + C (Chrome)
            e.metaKey == true && e.altKey == true && e.keyCode == 67 ||
            // CMD + Shift + C (Chrome)
            e.metaKey == true && e.shiftKey == true && e.keyCode == 67 ||
            // Ctrl + Shift + I (Chrome, Firefox, Safari, Edge)
            e.ctrlKey == true && e.shiftKey == true && e.keyCode == 73 ||
            // Ctrl + Shift + J (Chrome, Edge)
            e.ctrlKey == true && e.shiftKey == true && e.keyCode == 74 ||
            // Ctrl + Shift + C (Chrome, Edge)
            e.ctrlKey == true && e.shiftKey == true && e.keyCode == 67 ||
            // F12 (Chome, Firefox, Edge)
            e.keyCode == 123 ||
            // CMD + Alt + U, Ctrl + U (View source: Chrome, Firefox, Safari, Edge)
            e.metaKey == true && e.altKey == true && e.keyCode == 85 ||
            e.ctrlKey == true && e.keyCode == 85
        ) {
            e.preventDefault();
            return false;
        }
    });

     

     

     

    만약 저 방법으로 F12, Ctrl + Shift + i, Ctrl + Shift + c 키를 감지하는 페이지가 있다면

    애초에 웹페이지에 접속하기 전부터 브라우저에서 개발자 도구를 띄운 상태로

    웹페이지에 접속하면 된다.

     

     

    위 방법을 막으려면 개발자 도구 감지 코드는 코드대로 작성하고

    중요한 페이지로 이동할 때에는 같은 창에서 이동하는 것이 아니라

    새 탭 또는 새 창을 열게 하는 것도 방법이 될 수 있다.

     

     

     

     

    인터파크 제발 매크로 좀 막아줬으면 좋겠다.

     

     

     

     

     

     

Designed by Tistory.