반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- git
- centos7
- config
- rocky9
- node.js
- popup
- Maven
- PM2
- jenkins
- jquery
- Next.js
- yona
- pwa
- Java
- javascript
- spring3
- NextJS
- Push
- MSsql
- Eclipse
- mybatis
- docker
- security
- FCM
- ajax
- MariaDB
- nodejs
- SpringBoot
- mysql
- submit
Archives
- Today
- Total
ふたりで
크롬 개발자 도구 차단 2, Detect browser developer tools by javascript 2(chrome, firefox, Edge) 본문
javascript
크롬 개발자 도구 차단 2, Detect browser developer tools by javascript 2(chrome, firefox, Edge)
graykang 2022. 10. 25. 18:19728x90
반응형
SMALL
개발자 도구 사용을 막는 방법에 대해 글을 하나 남겼었다 결론은 막지 못한다로 마무리를 지었지만...
ㅎㅎ 계속 파다 보니 해결 방법을 찾아냈다... 물론 내가 만든 소스 코드는 아니고 여기저기 참고하여 짜집기 한거지만
잘 동작하기에 글을 남긴다... 소스 코드는 아래와 같다.
아래 소스 코드는 마우스 우클릭 방지, f12 및 특수키 입력 방지, 그리고 개발자 도구 감지 시 강제 로그아웃 이 3가지
기능이 정리되어 있다. 해당 스크립트를 공통으로 사용되는 헤더 스크립트에 추가하면 된다.
개발자도구를 어떤 방법으로든 실행을 하면 Detecting 하며, 디택팅 되는 순간 로그아웃을 해버리며 오류 페이지로
전환을 해버리기 때문에 개발자도구를 실행한 클라이언트 브라우져는 해당 에러화면 소스 만 볼수 있다.
728x90
SMALL
$(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;
}
});
1. 출처: https://stackoverflow.com/a/71794156
3. 출처: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack
728x90
반응형
LIST
'javascript' 카테고리의 다른 글
moden javascript attribute data get set (선택요소의 data값 가져오기, 수정하기 moden javascript방법) (0) | 2022.10.27 |
---|---|
jquery 선택요소의 Data 값 가져오기, 수정하기 (0) | 2022.10.26 |
javascript D-Day 날짜계산 일,시,분,초 (0) | 2022.10.18 |
개발자 도구 차단 1, Detect browser developer tools by javascript 1 (chrome, firefox, Edge) (0) | 2022.10.06 |
window.location.href를 이용한 Query String get(),set() (0) | 2022.09.27 |
Comments