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

자유게시판

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

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

본문

오래간만에 자게에 글 남깁니다.

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

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

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

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

일단 컴맹들의 바보놀이: 

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

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

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


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  이걸 자동으로 해주는 해커들이 쓰는 계산기도 있는데, 여기서 변환하셔도 됩니다.


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분도 안걸리는데, 저걸 해독하려고 몇날 며칠 삽질하려는 사람은 없겠죠?  저걸 해독할 줄 아는 정도 실력이면, 그 시간에 직접 페이지를 짜겠죠. 

이상!!

추천
0

댓글 21개

헉.. 그 숨어있던 댓글을 찾아서 이렇게 해법까지 올려주시다니..
감개 무량입니다. :)

근데 많이 어렵네요.. ^^;
js encoding을 이용한 css encoding 인셈인가요?
일종의 Security through obscurity 로 볼 수 있겠네요?

js encoding 테크닉 자체로도 많은 부분을 배웠습니다.
고맙습니다. ^^
"일종의 Security through obscurity 로 볼 수 있겠네요?"

그렇죠.  일단 구글로 찾을수 있는 방법은 무조건 무용지물이라고 봐야 합니다. 구글에서 검색될 정도면 너무나 많은 사람들이 쓰고 있는거죠... -..-;;

그래서 차라리 허술하더라도 자신만의 방법을 만들어 내는게 더 낫습니다.  일단 자동툴로 해제될 일은 없으니까요.

php 의 zend encode 는 절대 허술하지 않습니다.  하지만 너무 쉽게 뚫리잖아요.  잘 알려져 있는 방법이기 때문에 그렇습니다. ^ ^;;;
요새 브라우져는 개발자도구를 참으로 잘 지원합니다.

자바스크립트로 처리되든 CSS내에서 뭔가 변칙적으로 처리되든...

페이지가 로드된 이후에 순수하게 현재 보이고 있는 상태의 스타일과 HTML을 가지고 올수있죠.

결국은 한번 브라우져에 뿌려진 정보는 무조건 그대로 가져갈 수 있다는 것... OTL
네. 개발도구를 이용해 해독 하는 방법도 보안전문가들에 의해 많이 소개되어 있습니다.  또 제 example 도 다시 한겹을 더 싸면 개발자 툴에서 안보이게도 할수 있구요...   

하지만 완전한 방법은 없습니다.  단지 casual user 들을 털어내고, 개발자 툴로 소스를 살펴보는 사람들을 삽질을 많이 하도록 유도하는 방법이 최상책 입니다. ㅎㅎㅎ

여기서 보시면 아실 수 있듯이

http://www.kahusecurity.com/2011/a-tricky-obfuscated-javascript/

이걸 해독하려고 저 전문 보안 관계자도 엄청 삽질을 한거거든요.  ㅎㅎㅎ

결국 이거죠.  js 와 css 를 얻어내기 위해서 저런 수고를 할바에는 자신이 직접 짜는게 시간절약이다 라는 깨우쳐 주는 겁니다.

곰이 나를 쫒아 올때 나는 곰보다 더 빨리 뛰지 않아도 됩니다.  단지 나랑 같이 뛰는 사람보다만 더 빨리 뛰면 됩니다.  ㅋㅋㅋ


아!! 

"페이지가 로드된 이후에 순수하게 현재 보이고 있는 상태의 스타일과 HTML을 가지고 올수있죠."

정말요?

한번 해보시길.  ㅋㅋㅋ 그렇게 말처럼 쉬운게 아닙니다.  제 파일을 받아서 글자 한자만 수정해 주세요.  HackyYa 여기서 "H" 자 한자만 바꿔봐주세요.

글자 하나만 바꾸실 수 있으시면 제가 능력자로 인정해 드리죠. ㅋㅋㅋ

엔피씨님이나 c찰스님은 바꾸실 수 있는걸 제가 알지만, 알쯔님은 안되실텐데.. ㅋㅋㅋ
다운받는거는 우클릭, 저장하기 하면 끝이죠.  -.-;;  뭐 컴맹도 아니고... 쿨럭...

저걸 고칠 수 있느냐가 관건이죠.  뭐 제 사이트 광고해주시려는 목적이 아니라면 이름을 바꾸셔야 겠죠? ^^

저 페이지의 html text 한자 를 바꾸실 수 있는 분이 엔피씨님, C 찰스 님 말고 또 어느분이 계실까요?  아마 다른분들은 힘들지 않을까 생각해 봅니다. ㅎㅎ
네. ㅎㅎ

워드프레스 기반의 CMS (게시판은 그누보드) 를 만들어서 공개하려고

(CMS 라고 해봐야 허접한 수준이죠. 쿨럭.  사실은 제 홈피를 그냥 뜯어서 공개하는 수준..)

사용 설명 페이지 만드는 도중에 소스코드를 감추는 방법이 궁금하신 분들이 계셔서 급조해 올린거에요.

그냥 이런 잘 알려지지 않은 방법으로도 소스코드를 숨기는 방법도 있다는걸 알려드릴려고.

근데 CMS 를 공개해야 할지 고민스럽네요.  초보자 분들에게는 웹사이트를 만드는데 유용할 것 같지만, 프로그래머 분들이 제가 만든 것 보고 웃으실까봐....

제가 워낙 허접한 수준의 코딩밖에 할줄 몰라서....  그냥 공개하지 말까, 쪽팔려도 눈 딱감고 공개를 할까 생각 중 입니다. ㅎㅎㅎ

좋은 주말 되세요.
2시간 밖에 안걸리셨어염??? 우왕... 굿 입니다. 

ㅋㅋㅋㅋ

ㅊ ㅋ ㅊ ㅋ
 
개 삽질이죠... ㅋㅋ

그래도 공부하시는데 도움이 되셨길 바랍니다. 

* 급하게 올리느라 제가 저걸 감싸지는 않았는데요, 2겹, 3겹 다른 방법으로 또 압축시키시고 감싸시면 그거 푸는 사람은 엄청난 개고생을 하게 됩니다.

그런데 이정도만 하셔도 대부분의 사람들은 포기할 거에요. ^^

좋은 주말 되시길....

저 워드프레스 기반 CMS 하나 만들어서 공개하려고 하는데, 전진님 땜에 공개할까 말까 고민 중 입니다.

전진님이 보시고 웃으실까봐.... -..-;;

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

앗?

근데 푸신게 아닌데....

제가 급하게 올리다 보니 실수했네요... ㅍ ㅎ ㅎ

아래 부분은 처음부터 암호화를 하지 않았었네요... ㅋㅋㅋㅋ

죄송.. 죄송... 아랫부분을 그냥 압축만 시키고 암호화 하지 않아서 처음부터 브라우저로도 다 보이고 있었네염...

이런 엄청난 실수를....  -..-;;
어쩐지.. 아래부분에 dF() 함수가 보이길래 그걸 따라서 간건데..^^
그래도 재미있었습니다. ^^

CMS 꼭 공개해주세요.. :)
저는 말도 안되는 땜빵들 그냥 블로그에 올리고 있어요..
제 땜빵코드에 비하면 (카트 코드만 봐도) 분명 공부할 거리가 있을것 입니다. 
기대할께요. ^^
네... 처음부터 함수가 노출이 되어 있었죠. ㅋㅋㅋ

죄송....

CMS 는... 너무 허접해서요... 기대하시면 안됩니다...

-..-;;

전진님이 기대하신다고 하시믄, 제가 부담이 백배로 늘어나서.... ㅠㅠ

사실은 모조키님이 끝내주는 DTD 용 홈 빌더를 90% 이상 다 만드셨는데, (그누보드에 소개된 빌더 중에서 역사상 최고의 빌더가 될 것 같네요. 저는 옆에서 코딩한다고 하면서 모조키님한테 민폐만 끼쳤다눈.... -..-;;)

그거랑 붙여서 쓰면 되는 부분이라... 제가 만든 부분은 무지 허접한데....

기대하지 마세요... 전진님이랑 다른 고수분들이 다운받아 보실까봐 부담스러워서 공개 하지 말까 하는 생각이 더 많습니다... 쿨럭..
제가 한동안 고민하던 때에, 고민의 정점이었던 건, css 를 반드시 숨겨야 하느냐, 이거였습니다.
아마도 숨길 필요도, 효용도 없다라고 판단하고 접었던 거 같네요.
이게 사람들의 입장마다 다를 것 같습니다.  저 같은 경우야 취미생활 하는 사람이니까, css 코딩이 예쁘게 나오고 어떤 새로운 디자인 개념 (js+css) 같은게 나오면 이걸 일단 공유부터 하고 싶어 집니다.

사실 허접하나마 CMS 를 만들어 공개하려는 이유는, 예쁘게 css 하고 js 짠걸 여러 사람들과 공유하고 싶은데, 그냥 디자인만 스킨실에 올릴 수 없으니까, 억지로 CMS 를 만드는 중이거든요.

그렇지만, 이 일이 생업이라면, 가장 잘 나온 디자인이나 코딩은 당연히 숨기고 싶고, 숨겨야 하는게 아닐까 생각됩니다. 돈문제와 직결된거니까요.

제 입장에서는 가장 못나게 만든 css 디자인이나 jQuery 를 사람들에게 숨겨야 하는 입장이고 (그런걸 남들이 보면 쪽팔리니까. ㅋㅋㅋ) 지운아빠는 가장 못난걸 공유하고 정말 잘 만든건 돈되는 일에 쓰셔야 하실거고....

그래서 급하게 css 를 .js 에 숨기는 방법을 생각해낸건데요... 분명 이런 방법을 조금씩 섞어 쓰시는게 지운아빠 입장에서는 좋을 것 같습니다. 

(전부다 옮기시지 마시구요, 조금씩 섞는게, 그걸 풀어 써야 하는 사람입장에서는 더욱더 풀기가 어렵고 시간이 오래 걸립니다.  왜냐하면 일괄적인 적용을 못하고 그걸 다시 갈라서 정리한 후 해독을 하는 수고스러움이 더해지니까.)

저 간단한거, 중요부분은 암호화 하는것도 깜박하고 올려놨는데도 전진님이 이걸 푸시는데 2시간 걸렸다잖아요. ㅎㅎㅎ

분명 효과있는 방법 같습니다.
전체 195,064 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여1 회 시작24.03.28 11:15 종료24.04.04 11:15
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT