본문 바로가기
[ JAVA ]/JAVA Spring

[ Spring ] 코드 난독화

by 환이s 2023. 4. 19.


자바 스크립트 난독화

 

자바 스크립트는 클라이언트에서 실행되는 스크립트 언어이므로 소스 코드가 그대로 노출됩니다. 물론 굳이 자바 스크립트까지 난독화할 필요는 없지만 만약 중요한 기능이라면 난독화 기능을 사용하여 배포하는 게 좋습니다.

 

  • 자바스크립트 난독화 사이트

 

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

 

/packer/

Copyright © 2004-2023 Dean Edwards. All rights reserved.

dean.edwards.name

- https://obfuscator.io/

 

JavaScript Obfuscator Tool

What is this? This tool transforms your original JavaScript source code into a new representation that's harder to understand, copy, re-use and modify without authorization. The obfuscated result will have the exact functionality of the original code. How

obfuscator.io

- https://javascriptobfuscator.com/Javascript-Obfuscator.aspx

 

Javascript Obfuscator - Protects JavaScript code from stealing and shrinks size

 

javascriptobfuscator.com

 


자바 코드 난독화(Java Code Obfuscation)

 

- 자바 프로그램은 디컴파일(decompile), 디스어셈블(disassemble)이 가능하 므로 코드난독화가 필요함

Hello.java => Hello..class

Hello.class => Hello.java 역어셈블(디스어셈블)

 

- 프로가드(proguard) : 대표적인 자바 난독화 라이브러리

https://sourceforge.net/projects/proguard/files/

 

ProGuard Java Optimizer and Obfuscator - Browse Files at SourceForge.net

A platform built for a new way of working The Work OS that lets you shape workflows, your way

sourceforge.net

- 변수명, method name을 읽기 어렵게 변환함

 

- 난독화를 해도 근본적으로 디컴파일은 막기 어려움

 

- spring 프로젝트보다는 자바 프로젝트에 적합(war 파일보다는 jar 파일로 export 할 경우에 적합함, 어노테이션, xml 설정 등에는 난독화 적용이 어려 움)

 

 

간단한 예제 코드를 통해서 알아봅시다.


예제 코드

 

예제 코드로는 자바 스크립트 코드로 진행합니다.

여기서 주의할 점은 ${path} 값을 정확한 경로 값으로 변경해서 난독화해야 합니다. 

제 경로는 spring/shop/product 이므로 ${path} 값에 들어갈 경로는 spring입니다.

 

if(confirm("삭제하시겠습니까?")){
		document.form1.action="${path}/shop/product/delete.do";
		document.form1.submit();
	}

 

위에 올려둔 난독화 사이트 한 곳에 들어가서 코드를 올려주시고 Obfuscate 버튼을 클릭하시면 Output에 난독화된 코드가 나옵니다.

 

난독화된 코드를 복사하셔서 사용하시면 됩니다.

 


마치며

 

오늘은 코드 난독화에 대해서 포스팅해보았습니다.

솔직히 아직까진 난독화를 꼭? 해야 할 만큼 비중 있는 작업을 해본 적이 없어서

크게 와닿지 않지만 혹시 모르니 알아두면 좋을 거 같습니다..^^

728x90