SmartWeb

개발자모드차단 및 DevTools 실시간 감지 스크립트

개발자모드차단을 위해 다중 감지 기법 기반의 DevTools 실시간 탐지 로직을 적용한 클라이언트 보호 스크립트입니다.
브라우저 분석 환경이 감지될 경우 즉시 DOM 무력화 및 강제 리다이렉트를 수행하여 무단 디버깅 및 코드 분석을 차단합니다.
[code]
(function(){
 var devOpen = false;

 function redirect(){
  if(devOpen) return;
  devOpen = true;
  try{ document.documentElement.innerHTML = ''; }catch(e){}
  window.location.replace('about:blank');
 }

 setInterval(function(){
  var s = performance.now();
  console.profile(); console.profileEnd();
  if(performance.now() - s > 120) redirect();
 }, 800);

 function detectSize(){
  if(window.outerWidth - window.innerWidth > 140) redirect();
  if(window.outerHeight - window.innerHeight > 140) redirect();
 }
 window.addEventListener('resize', detectSize);
 setInterval(detectSize, 500);

 setInterval(function(){
  var s = performance.now();
  (function(){ debugger; })();
  if(performance.now() - s > 80) redirect();
 }, 800);

 (function(){
  var el = new Image();
  Object.defineProperty(el, 'id', { get: function(){ redirect(); } });
  setInterval(function(){ console.dir(el); }, 1000);
 })();

 (function(){
  var fn = function(){ return 1; };
  var org = fn.toString();
  setInterval(function(){ if(fn.toString() !== org) redirect(); }, 1000);
 })();

 if(window.top !== window.self) redirect();

 document.addEventListener('contextmenu', function(e){ e.preventDefault(); });

 document.addEventListener('keydown', function(e){
  if(e.key === 'F12') redirect();
  if(e.ctrlKey && e.shiftKey && ['I','J','C','K'].indexOf(e.key) !== -1) redirect();
  if(e.ctrlKey && (e.key === 'u' || e.key === 'U')) redirect();
  if(e.metaKey && e.altKey && e.key === 'I') redirect(); /* Mac */
 });

})();
[/code]
단, 100% 막는 건 불가능합니다. 브라우저마다 우회 방법이 존재하므로 억제/불편하게 만드는 수준으로 이해하시면 됩니다.
|

댓글 3개

보안 목적이라 보기엔 주장과 실제 효과 사이의 간극이 크다.
개도구 감지는 구조적으로 우회가 가능해서
"차단"이라기보다 사용성을 제한하는 수준에 가깝고,
돔 파괴와 강제 리다이렉트는 오탐 시 정상 사용자 경험을 직접적으로 훼손할 수 있다.
보호가 목적이라면 클라이언트 억제보다는 우회가 어려운 지점에 방어를 두는 편이 더 적절해 보인다.

개발자에게 권장할 설계 방향은 아니다.            ?
"단, 100% 막는 건 불가능합니다. 브라우저마다 우회 방법이 존재하므로 억제/불편하게 만드는 수준으로 이해하시면 됩니다."  글자 못읽으세요?
감사합니다 ^^
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

+
제목 글쓴이 날짜 조회
3년 전 조회 4,947
어제 조회 43
1주 전 조회 229
1주 전 조회 196
1주 전 조회 162
3주 전 조회 475
4주 전 조회 411
1개월 전 조회 406
1개월 전 조회 458
1개월 전 조회 533
1개월 전 조회 532
1개월 전 조회 527
1개월 전 조회 492
1개월 전 조회 706
1개월 전 조회 618
1개월 전 조회 580
1개월 전 조회 545
1개월 전 조회 705
2개월 전 조회 657
2개월 전 조회 531
2개월 전 조회 766
2개월 전 조회 735
2개월 전 조회 663
2개월 전 조회 646
2개월 전 조회 772
2개월 전 조회 631
2개월 전 조회 649
2개월 전 조회 811
3개월 전 조회 645
3개월 전 조회 846
3개월 전 조회 734