Skip to main content

JavaScript 개발자 도구 탐지

이 문서는 NetFUNNEL JavaScript 에이전트에서 개발자 도구가 열렸을 때를 감지하는 기능에 대한 안내를 제공합니다.사용자가 개발자 도구를 사용하여 웹 애플리케이션을 분석하거나 조작하는 것을 방지하기 위해 개발자 도구를 열었을 때 이를 감지하여 특정 동작을 수행하도록 할 수 있습니다.


1. 적용 방법

NetFUNNEL JavaScript Agent가 설치되어 있는 HTML 또는 JavaScript에 아래와 같이 작성합니다.

window.addEventListener('load', function () {
Netfunnel.devtoolsAddListener(function (isOpen) {
if (isOpen) {
// TODO: Write the action to be taken when developer tools are opened.
// Suggestion 1: Terminate user session
// ex: fetch('/api/logout', { method: 'POST' }).then(() => window.location.href = '/login');
// Suggestion 2: Hide sensitive data
// ex: document.querySelectorAll('.sensitive-data').forEach(el => el.style.display = 'none');
// Suggestion 3: Redirect to a warning page
// ex: window.location.href = '/warning';
} else {
// TODO: Write the action to be taken when developer tools are closed.
}
});

Netfunnel.devtoolsLaunch();
});

2. 주요 함수

2.1 devtoolsAddListener()

개발자 도구의 열림/닫힘 상태를 감지하는 리스너를 등록합니다.

Syntax:

Netfunnel.devtoolsAddListener(callback);

Parameters:

  • callback (Function): 개발자 도구 상태가 변경될 때 호출되는 콜백 함수

  • isOpen (Boolean): 개발자 도구가 열려있으면 true, 닫혀있으면 false

2.2 devtoolsLaunch()

개발자 도구 탐지 기능을 시작합니다.

Syntax:

Netfunnel.devtoolsLaunch();
warning

devtoolsAddListener()로 리스너를 등록한 후 반드시 devtoolsLaunch()를 호출해야 탐지 기능이 동작합니다.


3. 예시

3.1 경고 메시지 노출

window.addEventListener('load', function () {
Netfunnel.devtoolsAddListener(function (isOpen) {
if (isOpen) {
alert('Developer tools detected. The page will be refreshed for security reasons.');
window.location.reload();
}
});

Netfunnel.devtoolsLaunch();
});

3.2 특정 페이지로 이동

window.addEventListener('load', function () {
let redirected = false;

Netfunnel.devtoolsAddListener(function (isOpen) {
if (isOpen && !redirected) {
redirected = true;

// Redirect to the security policy page
window.location.href = '/security-policy';
} else if (!isOpen) {
// Reset redirection flag when developer tools are closed (optional)
redirected = false;
}
});

Netfunnel.devtoolsLaunch();
});