자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi exe파일의 폼(TForm) 리소스(RCDATA) 포함안되게 하는 방법은
2017.01.09 12:51
컴파일된 실행파일(*.EXE) 파일의 리소스가 Resource Hacker (http://www.angusj.com/resourcehacker/)
같은 툴에서 보여지는 것을 확인하였습니다.
UPX 같은 패킹 프로그램을 사용해서 실행파일을 패킹해도 언패킹이 가능하여 소용없습니다.
문제는 아이콘이나 이미지 리소스 뿐만 아니라 폼디자인(*.DFM) 파일까지 전부 노출된다는 것입니다.
그림에서 왼쪽 RCData 영역에 모든 폼이 나타납니다.
TADOConnection, TADOQuery 처럼 데이데베이스 연결과 쿼리문등이 그대로 노출된다는 것입니다.
특히나 디자인 타임에 TADOConnection에 ConnectionString을 작성하고 컴파일하면 데이터베이스 연결정보도
그대로 노출되어 보안에 치명적입니다. (대형 사고?)
물론 *.pas에 작성한 코딩 소스는 노출이 되지 않지만 혹시라도 이런 것을 모르고 개발한다면 정말 큰일입니다.
디자인 타임에 DB를 TDataSet에 연결하여 작업하면 생산성이 무척 좋으니 아마 많은 개발자가 그렇게 할 것으로
예상됩니다.
UPX 패킹 이나 protect 도 모두 풀리므로 해결방법은 아닙니다.
Resource Hacker 같은 프로그램이 캡션등을 번역하여 자국어로 재컴파일하는 용도로 사용되는 것 같은데
문제는 데이터베이스와 관련된 항목이 노출되는 것은 정말 치명적입니다.
현재 디비연결정보는 디자인타임에 사용후 제거하고 별도 서버에서 다운로드하여 연결하고 있습니다.
그래도 쿼리문등이 노출되는 것을 막을 방법이 있을까요?
폼 리소스가 노출되지 않게 컴파일 하는 방법이 있는지 해결 방안 좀 부탁드립니다.
댓글 3
-
얄리
2017.01.09 14:33
-
미스터몽키
2017.01.09 15:22
답변 감사합니다.
현재 디비 연결정보는 소스상에 없고 별도 서버에서 관리하고 있습니다.
폼디자인 정보나 , 쿼리문을 노출시키지 않을 방법이 있을까 해서 질문드립니다.
-
푸른솔
2017.01.10 11:41
아마 Query 콤포넌트에 Query 문을 입력해 사용하시는 듯 보이는데요...그렇다면 이는 매우 좋지 않은 방법입니다.
보안을 떠나서....이유는 검색해 보시면 자세하게 알 수가 있습니다.
SP를 만들어 실행하면 효율성도 있고 보안도 됩니다...
그리고 보안만 따진다면 뷰를 만들어 실행하는 방법도 있겠지요... 보통 외부에 Query를 제공할때는 뷰로 만들어 주듯이...
Query문을 노출하더라도 무방하게 만들어야 합니다.....
참고만 하십시오...
Delphi exe파일의 폼(TForm) 리소스(RCDATA) 포함안되게 하는 방법은
2017.01.09 12:51
컴파일된 실행파일(*.EXE) 파일의 리소스가 Resource Hacker (http://www.angusj.com/resourcehacker/)
같은 툴에서 보여지는 것을 확인하였습니다.
UPX 같은 패킹 프로그램을 사용해서 실행파일을 패킹해도 언패킹이 가능하여 소용없습니다.
문제는 아이콘이나 이미지 리소스 뿐만 아니라 폼디자인(*.DFM) 파일까지 전부 노출된다는 것입니다.
그림에서 왼쪽 RCData 영역에 모든 폼이 나타납니다.
TADOConnection, TADOQuery 처럼 데이데베이스 연결과 쿼리문등이 그대로 노출된다는 것입니다.
특히나 디자인 타임에 TADOConnection에 ConnectionString을 작성하고 컴파일하면 데이터베이스 연결정보도
그대로 노출되어 보안에 치명적입니다. (대형 사고?)
물론 *.pas에 작성한 코딩 소스는 노출이 되지 않지만 혹시라도 이런 것을 모르고 개발한다면 정말 큰일입니다.
디자인 타임에 DB를 TDataSet에 연결하여 작업하면 생산성이 무척 좋으니 아마 많은 개발자가 그렇게 할 것으로
예상됩니다.
UPX 패킹 이나 protect 도 모두 풀리므로 해결방법은 아닙니다.
Resource Hacker 같은 프로그램이 캡션등을 번역하여 자국어로 재컴파일하는 용도로 사용되는 것 같은데
문제는 데이터베이스와 관련된 항목이 노출되는 것은 정말 치명적입니다.
현재 디비연결정보는 디자인타임에 사용후 제거하고 별도 서버에서 다운로드하여 연결하고 있습니다.
그래도 쿼리문등이 노출되는 것을 막을 방법이 있을까요?
폼 리소스가 노출되지 않게 컴파일 하는 방법이 있는지 해결 방안 좀 부탁드립니다.
댓글 3
-
얄리
2017.01.09 14:33
-
미스터몽키
2017.01.09 15:22
답변 감사합니다.
현재 디비 연결정보는 소스상에 없고 별도 서버에서 관리하고 있습니다.
폼디자인 정보나 , 쿼리문을 노출시키지 않을 방법이 있을까 해서 질문드립니다.
-
푸른솔
2017.01.10 11:41
아마 Query 콤포넌트에 Query 문을 입력해 사용하시는 듯 보이는데요...그렇다면 이는 매우 좋지 않은 방법입니다.
보안을 떠나서....이유는 검색해 보시면 자세하게 알 수가 있습니다.
SP를 만들어 실행하면 효율성도 있고 보안도 됩니다...
그리고 보안만 따진다면 뷰를 만들어 실행하는 방법도 있겠지요... 보통 외부에 Query를 제공할때는 뷰로 만들어 주듯이...
Query문을 노출하더라도 무방하게 만들어야 합니다.....
참고만 하십시오...
해결 방법이 아니라 사견이라 죄송합니다만..
로그인 정보, 커텍션 스트링, 쿼리 등과 같은 중요한 정보를 코드에 직접 포함해서 개발하는 것은 자살행위입니다. 이미 90년대 초 원격 RDBMS에 데이터를 저장하는 C/S 방식(2-tier)으로 개발할 때부터도 상식적인 내용이었는데 설마 지금도 그렇게 개발하는 개발자 혹은 프로그램이 남아 있을까 합니다.
실제로 DFM 파일 구조를 보는 것 같은 경우는 해킹툴 아니라도 델파이를 잘 하시는 개발자들이라면 직접 프로그램을 만들어서 개발 이나 운영에 활용하는 경우도 봤고, 아무리 리소스가 노출되지 않게 하더라도 그것이 풀리는 것은 시간 문제이지 결국은 풀릴 수 밖에 없는 위험이라고 생각됩니다.
만약 소스코드에 중요한 정보가 그대로 코딩되어 있는 프로그램이 있다면 당장이라도 해당 프로그램을 수정하시거나 아예 재개발 하는 것이 정답이라는 생각이 드네요.