제가 웹페이지에 기능을 추가해야하는 일이 생겼습니다.

그 기능은 바로 Print Screen을 하지 못하게 하는 것입니다.

즉, 화면 캡쳐를 하지 못하도록 막는 것입니다.

하지만 이는 불가능하다는 MS의 답변이 있습니다.

  • I should warn you that there's no way to prevent another application from grabbing the pixels from your window. - 'Disabling Print Screen'

즉, 다른 프로그램을 이용해서 캡쳐하는 것을 막을 수 없다죠.

하지만 초보적인 print screen + 그림판에 붙여넣기라도 막아보자 생각해보았습니다.

 

이리저리 알아보니 HTML Guardian이라는 프로그램에

해당 기능이 있다는 것을 확인하였습니다.

프로그램을 실행시키니 정말 프린트스크린이 되지 않았습니다.

그렇지만 해당 프로그램을 구입하기에는 아쉬워서

어떻게 작동하는가 알아보았습니다.

구글링을 해보니 주기적으로 클립보드를 비우는 방법을 쓴다고 하였습니다.

실제로 프로그램의 해당 기능을 설명할 때 이렇게 말하고 있습니다.

즉, 클립보드를 사용못한다고 되어있지요.

 

그래서 그와 같은 기능을 하는 소스를 구해 적용시켜보았습니다.

'Disable PrintScreen / Copy/Paste functionality'

그러나 문제가 발생하였습니다.

현재 제가 테스트하는 컴퓨터는

IE7을 설치하였다가 너무 불편(?)해서 다시 제거한 것입니다.

그래서 IE7의 잔재(?)가 몇 개 남아있지요.

그 중 하나가 바로 clipboardData시 확인 메시지를 띄운다는 것입니다.

'Internet Explorer 6에서는 발생하지 않던 Access Clipboard 메시지가 뜹니다.'

해당 소스를 보면 계속해서 클립보드에 접근하기에

메시지가 무한으로 나옵니다.

그래서 프로세스를 강제로 kill할 수밖에 없지요.

 

어떻게 하면 저 메시지를 띄우지 않을 수 있나 찾아보았습니다.

그러나 모두 클라이언트의 인터넷 설정을 바꾸라는 말 뿐이었습니다.

'IE7 보안 설정 바꿔보기'

저 방법은 보안을 낮추게 되어 상당히 위험하지요.

'[긴장] Windows Clipboard 가 노출되어 있다 !!'

그렇기에 제가 원하는 것이 아니었습니다.

 

그런데 재미있는건 위에 얘기한 HTML Guardian으로 만든 것은

그런 메시지를 띄우지 않는다는 것입니다.

어떤 다른 방법이 있는건지 어떤지 잘 모르겠더군요.

왜냐하면 소스를 살펴보면 이상하게 적혀있어 알아볼 수가 없기 때문입니다.

그런데 여기서 힌트를 얻을 수 있었습니다.

'혹시 저렇게 소스가 변형되어있으면 익스는 모르는거 아닐까?'

그래서 실험을 해보았습니다.

 

실험 도구로 Windows Script Encoder를 이용하였습니다.

'Windows Script Encoder'

(해당 프로그램의 이용방법은 적지 않겠습니다.)

원래 이 프로그램은 자바스크립트를 인코딩하여

함부로 소스를 보지 못하게 만든 것이지요.

하지만 벌써 디코더가 나와있어서 무용지물이죠.;;

이를 적용시켜보았습니다.

 

위에서 제가 만든 파일을 인코딩하였습니다.

그러고 나서 이 파일을 실행시켜보았습니다.

해당 메시지가 뜨지 않습니다!

클립보드가 비워지는지 확인해보았더니 제대로 작동하고 있습니다.

즉, 위의 '기본값입니다.'를 복사하여

그 옆에 붙여넣기를 해도 나타나지 않는 것입니다.

 

이 파일을 파폭에서 확인해보았습니다.

해당 기능이 원래 IE전용이라 작동을 하지 않습니다.

그리고 다음 에러 메시지가 뜨더군요.

즉, body 태그에 넣은 함수가 없다는 뜻이죠.

그래서 이름만 있는 함수를 넣었습니다.

그러니 에러가 나오지 않더군요.

그리고 저렇게 두 개의 함수를 넣었어도 IE에서 작동이 잘 됩니다.

 

이 점이 궁금하여 따로 살펴보았습니다.

즉, 함수명이 두 개인데 어떻게 IE에서는 에러를 내지 않는건가?

확인해보니 두 함수의 위치가 반대인 경우

즉, 다음과 같이 소스가 짜여진 경우 Hello 윈도우를 출력했습니다.

즉, 최하단의 함수에 접근하는 듯 싶습니다.

(여기에 대해서는 알아보지 않아 확실하지 않습니다.)

 

클립보드에 접근 시 안내 메시지를 띄우지 않는 방법은

위에서 말한 것처럼 Windows Script Encoder를 이용하는 것입니다.

대신 IE에서만 작동하니 인코딩 후 해당 코드를 js로 따로 묶는 것이 좋을 듯 싶습니다.

 

또 하나 더 조심할 것이 있습니다.

클립보드를 계속해서 갱신하는 인터넷 페이지를 띄울 경우

그 윈도우를 최소화를 하고 다른 윈도우에서 작업을 해도

클립보드는 계속해서 갱신되고 있습니다.

즉, C&P가 OS 전체적으로 쓸 수 없는 것이지요.

이렇듯 마소와 파폭에서 클립보드로의 접근을 막는 이유가 있으니

왠만해서는 사용하지 마시기를 바랍니다.

(그러면서 이 글을 왜 적을까???;;;;)

 

PS

현재 컴퓨터에 IE7이 없어서 IE7에서는 어떻게 작동되는지 모르겠습니다.

후에 추가하도록 하겠습니다.

 

참조

http://msdn.microsoft.com

http://www.protware.com/

http://www.webdeveloper.com/

http://www.microsoft.com

http://sky4you.tistory.com/

http://www.parkoz.com

크리에이티브 커먼즈 라이선스
Creative Commons License

글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.

트랙백 주소 :: http://nosyu.pe.kr/trackback/815

댓글을 달아 주세요

  1. NoSyu 2007/03/31 23:38  댓글주소  수정/삭제  댓글쓰기

    IE7에서는 이 방법도 통하지 않더군요.^^
    스크립트를 부호화 하나 하지 않으나 확인 메시지가 떴습니다.
    다만 다른 점은 무한루프를 돌지 않고
    처음 한 번만 Yes or No를 대답했습니다.

  2. 사이다 2008/10/28 12:28  댓글주소  수정/삭제  댓글쓰기

    좋은 글 좋은정보 잘 보고갑니다 ^^

    • NoSyu 2008/10/28 14:56  댓글주소  수정/삭제

      반갑습니다.
      이 글에 적은 것은 IE6에서 적용되는 그리 좋지 않은 방법인지라 줄을 전부 그었습니다만,
      도움이 되셨다니 다행입니다.^^ㅜ

[로그인][오픈아이디란?]