[ JAVA ]/JAVA Spring

[ Spring ] 코드 난독화

환이s 2023. 4. 19. 13:01
728x90


자바 스크립트 난독화

 

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

 

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

 

- 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