본문 바로가기
Dev/script

(Javascript)개발자 도구 콘솔창 차단 방법 - 사이트 이동 [경고] 개발자 도구가 감지되었습니다.

by 하양동백 2023. 12. 14.

목차

    (Javascript)개발자 도구 콘솔창 차단 방법 - 사이트 이동 [경고] 개발자 도구가 감지되었습니다.


    1. 개발자 도구의 중요성과 사이트 보안

    웹 개발자들에게 개발자 도구는 필수적인 도구입니다. 이를 통해 웹사이트의 HTML, CSS, JavaScript 코드를 확인하고, 디버깅을 수행할 수 있습니다. 하지만, 개발자 도구를 사용하여 사이트의 보안을 위협하는 행위도 가능하기 때문에, 웹사이트 보호를 위해 개발자 도구의 접근을 제한하는 것이 필요할 때가 있습니다.

    2. 개발자 도구 감지 방법

    개발자 도구를 감지하는 가장 일반적인 방법은 window 객체의 devtools 이벤트를 활용하는 것입니다. 예를 들어, F12 키를 눌러 개발자 도구를 열거나, 브라우저의 오른쪽 클릭 메뉴에서 '검사'를 선택할 때 이 이벤트가 발생합니다.

    3. 개발자 도구 차단 스크립트 구현

    개발자 도구를 차단하는 가장 기본적인 방법은 JavaScript를 사용하여 특정 키 입력이나 조건을 감지하고, 이를 기반으로 경고 메시지를 표시하거나 페이지를 리디렉션하는 것입니다. 예를 들어, 다음과 같은 스크립트를 사용할 수 있습니다:

    document.addEventListener('keydown', function (event) {
      if (event.keyCode === 123) { // F12 키
        alert('개발자 도구가 감지되었습니다.');
        window.location.href = 'error_page.html'; // 에러 페이지로 리디렉션
      }
    });

    4. 브라우저 별 대응 방안

    다양한 브라우저에서 개발자 도구를 차단하는 방법은 조금씩 다를 수 있습니다. 예를 들어, 크롬 브라우저는 F12 또는 Ctrl + Shift + I 키 조합으로 개발자 도구를 열 수 있으므로, 이러한 키 조합을 감지하여 차단하는 방법을 사용할 수 있습니다.

    5. 제한 사항 및 대안적 접근 방법

    이러한 방법은 개발자 도구의 사용을 완전히 차단하지는 못합니다. 사용자가 키보드 단축키 대신 브라우저 메뉴를 통해 개발자 도구를 열 수도 있기 때문입니다. 따라서, 이러한 스크립트는 웹사이트의 보안을 완전히 보장하기보다는 단순히 사용자에게 경고를 주는 역할을 합니다.

    보다 강력한 보안을 위해서는 서버 측에서의 보안 조치와 데이터 암호화, 접근 제한 정책 등이 병행되어야 합니다. 또한, 웹사이트의 주요 기능이나 데이터를 클라이언트 측 JavaScript에 과도하게 의존하지 않도록 설계하는 것이 중요합니다.


    개발자 도구 차단의 한계와 실용적 접근

    개발자 도구를 차단하는 목적은 보통 보안 강화나 HTML 및 CSS를 숨기려는 의도에서 비롯됩니다. 그러나, 콘솔 창을 차단하는 것은 완벽한 해결책이 아닙니다. 이런 방법들은 언제나 우회할 수 있는 방법이 존재하므로, 이 기능을 간단히 사용하는 정도로 인지하시는 것이 좋습니다.

    콘솔 창 차단 코드의 위치와 사용

    Stack Overflow와 같은 사이트에서 다양한 콘솔 창 차단 코드를 찾아볼 수 있지만, 브라우저가 업데이트됨에 따라 대부분의 코드는 이미 막힌 상태입니다. 그럼에도 불구하고, Ukjin Yang 개발자의 코드를 찾을 수 있었습니다. 이 코드는 개발자 도구 콘솔 창을 열었을 때 특정 사이트로 이동하는 기능을 포함합니다.

    티스토리에서 스킨을 적용하기 전에 스킨 편집에 대한 기본 지식이 필요하다면, 아래 링크를 통해 확인하세요. 티스토리 스킨 편집 기초 상식

    콘솔 창 차단 코드를 삽입할 위치는 </body> 태그 바로 위입니다:

    <html>
    <body>
      <!-- 여기에 코드 추가 -->
    </body>
    </html>

    콘솔 창 차단 스크립트

    <!--콘솔창 차단 스크립트 시작-->
    <script>
    !function() {
      function detectDevTool(allow) {
        if(isNaN(+allow)) allow = 100;
        var start = +new Date();
        debugger;
        var end = +new Date();
        if(isNaN(start) || isNaN(end) || end - start > allow) {
          // 개발자 도구가 open된 것을 감지했을 때 실행할 코드 삽입
        }
      }
      if(window.attachEvent) {
        if (document.readyState === "complete" || document.readyState === "interactive") {
          detectDevTool();
          window.attachEvent('onresize', detectDevTool);
          window.attachEvent('onmousemove', detectDevTool);
          window.attachEvent('onfocus', detectDevTool);
          window.attachEvent('onblur', detectDevTool);
        } else {
          setTimeout(argument.callee, 0);
        }
      } else {
        window.addEventListener('load', detectDevTool);
        window.addEventListener('resize', detectDevTool);
        window.addEventListener('mousemove', detectDevTool);
        window.addEventListener('focus', detectDevTool);
        window.addEventListener('blur', detectDevTool);
      }
    }();
    </script>
    <!--콘솔창 차단 스크립트 끝-->

    추가 기능 구현

    • 경고 메시지 추가: 경고 메시지를 추가하고 싶다면, 위 스크립트 내 주석 처리된 부분에 아래 코드를 삽입합니다.
    • alert('개발자 도구가 감지되었습니다!');
    • 특정 사이트로 이동: 특정 사이트로 리디렉트하고자 한다면, 아래와 같은 코드를 사용합니다.
    • document.location.href="https://www.tistory.com/";
    • 여러 이벤트 추가: 여러 이벤트를 추가하고 싶다면, 경고 메시지와 리디렉트 코드를 동시에 사용할 수 있습니다.

    결과 확인

    이제 사이트에서 콘솔 창을 열면 디버깅이 일시 정지되고, 일시정지를 해제하거나 콘솔 창을 닫는 순간 경고 메시지가 나타나거나 특정 사이트로 리디렉션됩니다.


    개발자 도구 차단 방법을 이해하고 적용하는 것은 흥미롭지만, 완벽한 보안 솔루션으로 생각하면 안 됩니다. 이러한 방법은 일정 수준의 보안을 제공할 뿐, 보다 강력한 보안 조치를 취하는 것이 중요합니다.


    반응형

    댓글