상세 컨텐츠

본문 제목

[JavaScript] 자바스크립트 코드, 코드압축, 코드숨기기 코드암호화 보안 관련

WEB/JavaScript

by AlrepondTech 2020. 9. 20. 00:07

본문

반응형

 

=================================

=================================

=================================

 

 

 

출처: http://pay114.cafe24.com/?c=7/9&uid=359

 

 

1.escape/unescape 이용

 

escape() 

는 알파벳과 숫자 및 * , @, - , _ , + , . , / 를 제외한 문자를 모두 16진수 문자로 바꾸어 줍니다.

 

unescape()

는 16진수로 변환된 암호문을 원문으로 변환합니다.

 

※ 둘다 자바스크립트의 내장함수

 

ex)

<script language=javascript>
<!--

//원하는 문자열로 16진수 문자열로 인코딩
document.write(escape("<script lnaguage=javascript>alert('d');</script>")+"<br>");
//인코딩된 문자열을 다시 원문으로 디코딩

document.write(unescape("%3Cscript%20lnaguage%3Djavascript%3Ealert%28%27d%27%29%3B%3C/script%3E"));
//html이나 javascript일경우 브라우저가 해석해 버리기때문에 <xmp></xmp>을 써서 실행을 안시키고 소스 출력

document.write("<xmp>"+unescape("%3Cscript%20lnaguage%3Djavascript%3Ealert%28%27d%27%29%3B%3C/script%3E")+"</xmp>");
-->
</script>

 

2.encodeURI()와 decodeURI() 이용

 

encodeURI()-알파벳 , 숫자 , ( , ) , ' , ; 제외한 문자(특수문자,한글)들만 아스키코드 형태로인코딩 합니다. decodeURI()-encodeURI()로 인코딩된 문자열을 디코딩한다.

※ 둘다 자바스크립트의 내장함수(대소문자 가립니다.)

※ jscript에서는 encodeURI()와 decodeURI() 가 php에서는 urlencode(), urldecode() 기능을 합니다.

 

ex)

<script>
<!--
document.write(encodeURI("<script>alert('d');</script>"));
document.write(decodeURI("%3Cscript%3Ealert('d');%3C/script%3E"));
document.write("<xmp>"+decodeURI("%3Cscript%3Ealert('d');%3C/script%3E")+"</xmp>");
-->
</script>

 

3.script Encoder 이용

 

script Encoder는 스크립팅 코드만 인코딩합니다. script Encoder는 MS에서 만든 인코딩 프로그램입니다.

 

사용법)

 

*******************

**lee.jse파일 내용**

*******************

alert("d");
document.write("leejunsik");

 

프로그램 설치후 screnc.exe파일이 생성되고 bat(배치 파일)을 만들어 내용을 적는다.

screnc lee.js lee.jse <- screnc로 js파일을 인코딩된 jse로 변환하여 생성한다.

서버에 lee.jse을 업로드한후 아래와 같이 페이지에 기술합니다.

※<script></script>는 넣지 않습니다. 스크립트 소스만 넣습니다.

 

적용법(a.php)

 

<scRIPT LANGUAGE="Jscript.Encode" src="lee.jse"></script>

or

<scRIPT LANGUAGE="Jscript.Encode">

#@~^NwAAAA==C^+.D`rNJ*i@#@&NKm;:xO SDkDn`rV+%;xkk0Jbi@#@&@#@&@#@&+g0AAA==^#~@</script>

 

주의할점)

 

1)표시할 페이지에서는 vbscript파일인경우 <scRIPT LANGUAGE="VBscript.Encode"></script>을 쓴다.

2)표시할 페이지에서는 javascript파일인경우 <scRIPT LANGUAGE="Jscript.Encode"></script>을 쓴다.

3)익스플로어 브라우저에서만 해석을 합니다.

4)암호화가 아닌 부호화 복호화방식이라 디코딩 가능해 100% 소스를 보호하지는 못합니다.

[출처] 제트스윙 블로그 - http://www.zetswing.com

 

 

 

=================================

=================================

=================================

 

 

 

출처: http://hangukin.tistory.com/28

 

 

자바스크립트 프로그래밍을 하다보면 종종 그런 생각이 들 때가 있다.

마우스 우클릭 한번으로 내가 쌔빠지게 짜놓은 소스를 다른 사람들이 그대로 가져가서 쓴다면..

배가 아플텐데.. 나만그런가?-_ -; 여튼.. 나같은 엉덩이에 뿔난 사람들을 위한 암호화 툴을 소개

해보고자 한다.


우선 내가 알고 있는 툴은 현재 3가지가 있다.

1. Microsoft Script Encoder 

2. Packer JavaScript

3. scriptasylum.com Javascript Encoder


각각 장단이 있지만(참고 : http://www.lovelgw.com/Blog/79) ms는 인코더와 함께 디코더도

뿌리는 바람에 의미가 없고 스크립트어사일럼은.. 덩치가 너무 커진다. 나모에서 사용하는 패커

도 어사일럼같은데 정확히는 모르겠다. 비슷한 방식이다.


그래서 추천하는게 Joliclic code에서 제공하는 스크립트 인코더이다.

http://joliclic.free.fr/php/javascript-packer/en/index.php

유니코드와 브라우저 호환성이 좋다.

라이브러리를 받아다가 서버에 올려놓고 사용해도 되고,

일회성 사용자들을 위하여 사이트에서 즉시 변환해서 사용할 수도 있다. 


 



위와 같이 소스를 넣고 [Pack]를 누르면 바로 암호화된 코드가 튀어나온다.

이걸 그대로 갖다가 붙여넣으면 된다

 

 

 

 

반응형

 

 

728x90

 



단, 주의할점이 두 가지 있는데,

첫 번째는 자바스크립트의 고질적인 문제인 한글 문제이다. 에러라기 보다는 깨지는 문제가 발생한다.

미리 JavaScript escapes 등을 사용해서 변환해서 사용해야 한다.

두 번째는 디코딩이 생각보다 쉽다. 디코더가 따로 있는 것은 아니지만 alert문 같은 것은 눈으로도 가능

하고 코드를 유심히 들여다보면 그리 어렵지 않게 디코딩이 가능하다. 뭐.. 디코딩이 쉬우면 무슨 인코딩

의 의미가 있겠냐마는.. 누가 하릴없이 암호화소스를 보고앉아있을까..하는생각이든다-_-a..

 

http://lunaticlobelia.tistory.com/49



출처: http://hangukin.tistory.com/28 [배워서 남주자!]

 

 

=================================

=================================

=================================

 

 

 

출처: https://m.blog.naver.com/PostView.nhn?blogId=forioso&logNo=221003489996&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

 

 

오픈소스로 공개된 js 나 css 파일을 보면   일반 파일과 .min.  파일을 보통 같이 배포한다.

 

파일 사이즈를 줄여서 속도를 높여주기 때문이다.

 

Compressor 라고 하여 압축 이라고 하지만 실제로는 그냥 공백이나 변수명을 줄이는 기능이다.

 

개인이 개발한 스크립트나 펑션도 요즘은  min 으로 서비스를  한다.

 

속도와 보안 때문이다.

 

해커가 분석하기 어렵도록 난독화 한다고 보면 된다.

 

 

웹 기반으로 되어서 웹에서 바로 압축해 볼 수 있는 사이트도 많다.

 

http://dean.edwards.name/packer/

http://javascriptcompressor.com/

 

또는 자바 로 만들어져 로컬에서 만들어 주는 프로그램도 있다.

https://github.com/yui/yui3/releases

 

 # java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.js –charset utf-8

 

 

자바의 경우는 메이븐에 걸어서 자동으로 압축도 가능하다.

http://stackoverflow.com/questions/35716008/how-to-exclude-a-folder-from-yui-compressor

 

결론은 속도와 보안을 위해서 필수로 ...잡혀가는 분위기다.

 

그외 난독화하는 도구에는 CSS Compressor, YUI Compressor, Dojo shrinkSafe, Open Source Javascript Obfuscator 

 

 

=================================

=================================

=================================

 

 

출처 http://ahcript.com/archives/233

 

 

 

자바스크립트 난독화

오늘은 자바스크립트 난독화 하는법에 대해서 알아보겠습니다
기존에 자바스크립트 출력코드를 간단하게 먼저 설명할게요

다들 이렇게 출력하고 싶은 코드가 있죠?
자바스크립트 난독화 사이트로 일단 접속해주세요.
사이트 주소는 http://dean.edwards.name/packer/
자 이제 접속 하셨나요? 그러면 이제 코드를 붙혀넣어주세요!!

자바스크립트 코드를 넣어주시고 base62 를 체크 해주신다음 pack을 누르시면 완성!

 

 

=================================

=================================

=================================

 

 

기타 관련링크:

 

https://hackya.com/kr/css-%EC%99%80-javascript-%EC%86%8C%EC%8A%A4%EC%BD%94%EB%93%9C-%EC%95%94%ED%98%B8%ED%99%94-%ED%95%98%EA%B8%B0/

 

https://hackya.com/kr/php-%EB%A1%9C-css-%EC%99%80-js-%EB%B3%B4%ED%98%B8%ED%95%98%EA%B8%B0/

 

http://backback.tistory.com/215

 

http://appwriter.tistory.com/entry/Code-Compressor-%EC%BD%94%EB%93%9C-%EC%BB%B4%ED%94%84%EB%A0%88%EC%85%94%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EC%86%8C%EC%8A%A4%EC%BD%94%EB%93%9C-%ED%8C%8C%EC%9D%BC-%EC%9A%A9%EB%9F%89-%EC%A4%84%EC%9D%B4%EA%B8%B0

 

http://whitegrifin.tistory.com/370

 

 

=================================

=================================

=================================

 

 

반응형


관련글 더보기

댓글 영역