카테고리

컴파일된 코드는 왜 보안성이 좋은가?

마로가마따 2021. 7. 18. 08:46

그러게...

 

 

열심히 JSP 관련된 문서를 찾아보다가 JSP(자바 서버 페이지)는 컴파일 되어 코드를 숨길 수 있어 보안에 매우 우수하다.

라는 내용의 글을 보았다. 아니; 왜 컴파일 되면 보안이 우수한거지..?

 

 

 

 

 

알고보면 너무 당연할 수 도있지만 일단 나는 뭔소리인지 이해를 못했기 때문에 열심히

 

 

찾아보기 전에 생각을 해보았을때 컴파일이 무엇인가.. 

 

 

 

 

과거 선조들이 개발하던 시절에는 각각 기계(플랫폼)에 따라 서로 다르게 프로그램을 개발 해야했다. 이 과정을 매우 불편하게 여겨 플랫폼에 종속적이지 않는 고오오급 언어를 개발해 냈으니... 두둥!!

 

 

 

 

그것은 JAVA였다. 개발자는 JAVA언어로 프로그램을 개발하기만 하면 킹짱 자바 버츄어 머쉰~이 각각의 플랫폼에 맞는 어셈블리 언어로 바꾸어주었다. 이 킹짱 자바 버츄어 머쉰~이 하는 소스코드를 기계어로 번역하는 과정을 바로 컴파일이라 부른다. (와 개쩐당~)

 

 

그렇다면 컴파일된 코드는 왜 보안성이 우수한가

 

컴파일된 코드를 확인하기 위한 프로젝트

 

일단 집 컴퓨터에 있는 아무 프로젝트나 켰다. (집에 안쓰는 프로젝트 하나쯤은 다 있지!)

 

프로젝트에 다 대고 우글릭 후 맨밑에 프로퍼티스(Properties)를 클릭한다.

 

 

JSP-properties

 

빨간 동그라미 친 곳을 눌러 프로젝트 폴더에 들어간다.

 

 

컴파일

 

 

*.class 를 검색한다

 

 

class 파일 검색

 

집에 있는 아무 프로젝트의 class파일을 열어본다.

 

잘 안보이자나...

 

<title>태그같은 html 태그들은 뭐가 있는지 잘 보인다.

스크립트 태그에 있는 자바스크립트도 어느정도는 형태가 보인다.

 

그러나 <% %>로 감싸져있는 JSP는 16진수로 컴파일 되어있었다.

 

 

허걱쓰 ~ 

 

컴파일 안에는 최적화가 있어서 내가 주석처리한 부분이 없어지고 변수명이 없어지고 함수명이 없어지고 코드의 순서가 컴퓨터가 알기 쉽게 바뀐다고 한다. 

 

 

그래서 복원해도 보기가 힘들다고...

 

 

근데 그냥 단순히 함수명하고 변수명만 안보인다고 해서 이게 마음만 먹고 읽으면 읽을 수 있지 않은가? 라고 생각했는데... (실제로 그러한 역할을 해주는 디컴파일러도 존재하더라...)

 

 

 

 

 

BUT 보안 프로그램을 돌리면 진짜 모른다고 하더라...

 

 

 

 

 

 

 

 

결론 :

 

그냥 컴파일하면 16진수 파일로 되있어서 보기 힘들다.

 

실제 배포할땐 컴파일된 파일에 보안처리를 해주기 때문에 읽을 수가 없다.

 

컴파일된 파일은 보안성이 좋다

 

 

 

 

 

반응형