테스트 사이트 - 개발 중인 베타 버전입니다

css 와 js 를 숨기는 방법 (전진님 보시라고 지금 올려요.)

· 13년 전 · 26426 · 21
오래간만에 자게에 글 남깁니다.

여러가지로 바빠서 sir.co.kr 에도 자주 못 들렸네요.

어제 잠깐 보니 지운엄마랑 전진님이랑 css 를 숨기는 방법이 없는지 궁금해 하시던데...

비프로그래머도 쉽게 따라할 수 있는 간단한 방법 하나 알려드리고 갑니다.

내가 만든 이미지, 플래시, 디자인 등을 빨대족 들로부터 지키고 싶어 하는 분들은 10여년 전부터 있어왔는데,

일단 컴맹들의 바보놀이: 

방어자: 우클릭 방지, -   빨대족: 브라우저에서 .js 해제하고 퍼감
ㅋㅋㅋ
.js 를 해제하고 접근하는 방문자를 안드로메다 (밋스핀) 으로 관광 보내는 방법이 있긴 합니다.
<noscript><meta http-equiv="refresh" content="0; url="http://meatspin.com"></noscript>

그런데 이건 IE 의 경우고, 크롬에서는 .js 해제고 뭐고 필요없이 그냥 F12 만 누르면 됩니다.

플래시 같은 경우는, 제가 10여년 전쯤에 쓰던 Sothink 라는게 있는데,

http://www.sothink.com/product/flashdecompiler/

swf 을 다운받아서 fla 로 자동변환해줍니다. (유료이긴한데, 토렌트, 키젠, 크랙... 쿨럭...)

뭐 요즘 플래시로 뭘 만드는 무개념인 분들은 많이 없을거고...

/////////////////////////

js 와 css 를 어떻게 보호하는가 가 관건이겠죠.

일단 js 와 css 는 client-side 이기때문에 비공개를 할수가 없습니다.  불가능 합니다.  브라우저에 보이는건 다 공개가 됩니다.

더구나 웹복사기들 (요즘 성능좋은 것들 많더라구요.) 을 쓰는 빨대족들 로부터 코드를 비공개할수가 없습니다.  코드는 일단 보여줘야 합니다.

공개를 하되, 알아볼 수 없게 하는 방법 (암호화) 이 5~6 가지 정도가 있습니다. 문제는 인터넷에 공개된 방법들은, 해독 방법도 똑같이 나온다는거죠.

사실 php 도 마찬가지 입니다.  zend 로 인코딩 =>>  zend decoder

이제부터 방법입니다.

1. css 를 .js 로 옮깁니다.  순수 .js 보다는 jQuery 나 mootools 같은 js library 로 옮기시는게 수월합니다. 아예 처음부터 css 코딩을 .js 내에서 하면 옮기는 수고를 덜수 있겠죠? 물론 html 도 부분적으로 옮기시면 좋습니다.

2. .js 를 암호화 합니다.  위에서 말씀드렸듯이, base64encode 같은건 온라인에 decode 해주는 도구들이 즐비하기 땜에 보호받지 못합니다.  인터넷에 공개되지 않은, 자신만의 방법을 만드셔야 합니다.  그런데 이게 비프로그래머는 하기가 힘들죠.

그래서 아주 따라하기 쉬운 방법하나를 공개합니다.  제 방법을 해독해주는 도구가 있는지 눈에 불을 켜고 찾아 봤는데, 저는 아직 못찾았습니다.

ASCII 를 이용한 방법입니다. 사실 해킹방법이라서, 자세한 내용은 적나라하게 말씀드리기가 어려운데, 이런식 입니다.

옛날에 sql injection 같은거 예를들자면 ' or '1'='1' /* ' 이런거로 제로보드 허구하게 뚫렸었죠. 프로그래머들이 이걸 방어하기 위해 정규식씨를 불러다가 따옴표, 특수문자를 못 쓰게 하는걸로 막았었습니다. (호랑이 담배피우던 시절)

그때 해커들의 대응책은 이런거 였습니다.

"97,108,101,114,116,40,34,72,92,99,107,89,97,34,41"

이게 뭐냐구요?

a   l   e   r   t  (  "  H   a c   k   y  a " )

이거랑 똑같은 겁니다.  그러니까 ASCII 로 정규식씨를 피해가는 방법인거죠.

a=92, b=92 c= 99  이걸 자동으로 해주는 해커들이 쓰는 계산기도 있는데, 여기서 변환하셔도 됩니다.

http://easycalculation.com/ascii-hex.php

function fx(g)는 

102 117 110 99 116 105 111 110 32 102 120 40 103 41 

요렇게 계산해 줍니다.  쉽죠?

이걸 어떻게 쓰느냐?  웹사이트 해킹 당하시면 꼭 이게 보이죠? eval( 이걸로 시작해서 알아볼수 없는 이상한 외계어들... 

이게 해커들이 자신들의 악성 스크립트를 숨기는 방법인데, eval 에 관한 자세한 내용은:

http://blogs.msdn.com/b/ericlippert/archive/2003/11/01/53329.aspx eval 은 악이다.  뭐 이런 내용 입니다. 쿨럭.

암튼 해커들과 같은 방법으로 코딩 하시는 분들도 자신의 css 를 이렇게 숨길 수 있습니다.

eval(String.fromCharCode(97,108,101,114,116,40,34,72,92,99,107,89,97,34,41)

브라우저는 이걸 

a   l   e   r   t  (  "  H   a c   k   y  a " ) 와 똑같이 인식하지만, 이렇게 처리한후 minify/compress 해주면 사람 눈에는 암호처럼 보이죠.

참 쉽죠잉?  ㅋㅋㅋ

그런데 이걸 그냥 이렇게 방치하면 쉽게 알아보는 사람들이 간혹가다 있겠죠?  좀더 안전하게 하기 위해서 이걸 다시 2~3 번 정도 암호화 해서 감싸주면 됩니다.   암호화 하면서 MD5 salt 처럼 소금도 좀 뿌려주고.... 쿨럭... 

(저처럼) 뭘 봐야 이해가 되시는 visual oriented 하신 분들을 위해서 example 을 하나 만들어 놨으니 살펴보세요.  살펴보시면 div 하나 div id="hack" 의 css 를 .js 로 옮겨 놨습니다.


뭔 소리야?  firebug/크롬 개발자 툴로 보니 css 코딩이 다 보이네, 이러실까봐 미리 말씀드리지만, 위에서 말씀드렸듯이 코드를 비공개 할수는 없습니다.  단지 이걸 다운받아서 css 를 수정하려고 index.htm 을 까보면 아무것도 안보입니다.

그리고 여기에 css 코딩을 먹여봤자, 먹지를 않습니다.  왜냐하면, css 코드가 
x38\x2E\x36\x3D\x3D\x22\x49\x22\x29\x7B\x31\x38\x2E\x49\x3D\x31\x38\x2E\x49\x3B\x75\x20\x3

이런식으로 .js 에 포함되어 암호화 되어 있기 때문입니다.

결국, 저 페이지를 고쳐쓰려면, js 를 버려야 하는데, js 를 버리면 css 도 같이 버리게 되는거죠.

이해가 되셨길...

결국, 이 방법은, 자신의 css 를 복사하려는 사람을 무진장 삽질하게 만들어서, 복사하려든 의지 자체를 꺽어 버리는 방법인 것 입니다.  저 코딩 하는데 5분도 안걸리는데, 저걸 해독하려고 몇날 며칠 삽질하려는 사람은 없겠죠?  저걸 해독할 줄 아는 정도 실력이면, 그 시간에 직접 페이지를 짜겠죠. 

이상!!

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 21개

뭘 또 스크랩하세요? ㅎㅎㅎ

강재원 아이님이 이런 분야 전문가인거 제가 잘 아는데... ㅋㅋㅋ

게시글 목록

번호 제목
1717652
1717651
1717650
1717648
1717635
1717629
1717626
1717625
1717621
1717619
1717611
1717610
1717609
1717607
1717601
1717598
1717591
1717590
1717583
1717575
1717572
1717568
1717566
1717549
1717545
1717533
1717512
1717511
1717508
1717495