웹어플리케이션은 자바스크립트와 HTML을 사용하는 클라이언트 사이드 스크립트와 여러가지 언어를 사용하여 개발할 수 있는 서버사이드 코드로 구성된다.. 서버사이드 코드는 서버에서 실행이 되므로 서버에 접속할 수 있는 권한이 없으므로 리버스 엔지니어링은 불가능하다.. 하지만, 클라이언트 사이드 코드는 100% 내 PC로 다운로드 된 후 실행이 되므로 마음만 먹으면 맘대로 분석이 가능하다.. 게다 100% 텍스트로 되어 있으니 읽어보기도 쉽다..
간혹 이야기를 나누다 보면 클라이언트 사이드 코드를 사용자에게 숨길 수 있다고 생각하는 사람들이 있는데, 사실은 절대 숨길 수 없다.. 웹브라우저가 동작하는 방식을 생각해보면 당연한 구조상의 한계다.. 따라서 중요한 로직, 보안상 문제가 생길 수 있는 로직은 모두 서버사이드로 옮겨야 한다.. HTML 파일로 저장한 후에 PC에서 실행시키면서 마음대로 조작이 가능하기 때문이다.. 이런 부분을 간과하면 자칫 실수하기 쉬운 부분이다..
최근 수행중인 프로젝트 중에 이미 구축된 솔루션을 활용해야 하는 일이 있었는데, 정치적인 이유와 감정싸움 문제로 그 솔루션 업체의 지원을 하나도 받을 수 없는 상황이 되었다.. 결국, 만들어진 소스를 분석해서 원하는 기능을 만들어내야 하는 상황이 되었다.. 서버 쪽은 자바로 개발되어 있는데 jsp 소스는 있으나 자바 소스는 없고, class 파일만 있는 상황.. 난감하다..
결국, 서버사이드 코드는 그대로 활용하면서 클라이언트 소스만 수정을 하여 원하는 기능을 구현하기로 방향을 잡고 분석에 들어갔다.. 난이도를 요구하는 일은 아니지만, 관련 정보나 문서가 전혀 없으므로 이렇게 시도를 해보고 안되면 저렇게.. 시행착오를 거쳐가며 알아내야 하는 작업이므로 시간은 예상치보다 2배 이상의 시간이 걸렸다.. 지겹더군..
지겨워도 나중에 돌아가는 모습 보면 즐겁고, 몇가지 프로그램의 도움을 받아 좀 더 손쉽게 작업을 할 수 있었다.. HTML 소스나 자바스크립트 파일, CSS 파일을 쉽게 확인할 수 있는 프로그램은
Instant Source를 사용했다.. 웹브라우저에서 한 화면이 보여지는데 필요한 모든 파일을 죄다 찾아서 보여준다.. 골치 아픈 iFrame 구조도 잘 찾아준다.. 물론, 복잡한 경우 제대로 못 보여주는 경우가 있기도 하다..
그리고 서버에 보내는 정보와 내가 만든 페이지가 받는 정보에 대한 내용은
Fiddler를 사용을 해서 파라미터 이름과 보내는 데이터 내용을 확인했다.. POST로 데이터를 전송하는 모든 내용과 어떤 순서로 페이지들이 호출되는지를 실시간으로 모두 확인할 수 있다..
위의 2가지 프로그램 모두 IE에서만 동작한다.. 관련된 정보도 없고, 무슨 프로그램이 있는지는 모르겠지만, 아마도 FF용 프로그램들도 있을 것이라는 생각은 든다.. 물론, 위의 2개 프로그램보다 더 좋은 IE용 프로그램들도 있을 것이다..
아무튼 중요한 것은 전문적인 지식이 없어도 위의 2개 프로그램만 자신의 PC에 설치하면 누구나 쉽게 소스코드와 데이터가 왔다갔다 하는 것을 확인할 수 있다.. 웹 어플리케이션 개발시에는 이러한 상황을 잘 이해하고, 개발하는 프로그램의 목적과 상황에 맞춰 고려를 해서 프로그래밍을 해야할 것이다..
이 글과 관련있는 글을 자동검색한 결과입니다 [?]