Category :
ColdFusion
Comments :
댓글쓰기
Posted by
장창학
at
2:22 AM
지난달부터 주말을 이용해서 조금씩 회사내에서 사용할 고객지원게시판(제작한 홈페이지 및 유지보수에 관련한 문의를 접수 받고, 처리결과 답변을 다는 용도)을 ColdFusion으로 만들어 봤습니다. 보기에는 정말 단순 게시판이라 사실 공개하기도 그렇고, 바쁜 일정 주말에 집에서 틈을 내에 작업한 거라 처음의 계획인 Ajax나 jQuery를 완벽히 도입, 웹표준지원 등등 나름의 계획은 안드로메다로 가버린지 오래고.. 빨리 만들어야 한다는 압박감에 사실상 과거의 개발 악습을 그대로 답습한 어플이 되고 말았습니다. ㅠㅠ; 부끄럽지만 주요기능은 다음과 같습니다.(관리자 기능은 없습니다.)
- Flex+ColdFusion+MySQL 연동 파일업로더
- Railo 3.0, Adobe ColdFusion 8이상 지원
- 첨부파일 저장경로 지정(웹디렉토리외 /home/data 등 사용자 홈디렉토리외 주요 경로에서도 업로드/다운로드 가능)
- PDF생성기능
- 첨부파일 일괄압축 다운로드기능
- 첨부이미지 리사이즈 기능
- 첨부파일 확장자 제한 기능
- 첨부파일이 이미지인 경우 실제 이미지 인지 단순 확장자 변경파일인 구분하여 실제 이미지만 업로드 가능한 보안고려
- 사용자 이메일 이미지출력 기능(이메일 주소는 수집불가능하게 이미지로 표기됨)
- CAPTCHA 보안기능
- 다중게시물 보기 기능(관리자만)
- 처리자답변 댓글기능(관리자만)
- SQL인젝션/XSS공격 대응 보안을 고려한 코딩
- 사용자 예외처리 및 에러페이지
- 기타 등등 무진장 소소한 눈에 보이지 않는 기능
- 앞으로 개선할 것이라는 지켜지지 못할 것 같은 다짐기능 등등
일단 한번 테스트 계정을 만들어 설치 했습니다. 관리자 비밀번호는 123456입니다. 아직 별도의 관리자모드가 없습니다. 사용자가 쓴 글은 자신의 비밀번호를 입력해야만 열람이 가능하므로 게시물을 읽을때 관리자 비번을 넣게 되면 다른 모든 글을 읽거나 삭제하거나 할 수 있습니다.(단, 수정은 작성자 본인만 가능) 첨부파일은 개별최대용량이 20MB이내이나 5MB이내로 테스트해주시면 감사하겠습니다. ㅠㅠ;
몇몇기능은 간단한 게시판에 비해 기술적 문제가 참 많았었는데요. 그중 하나는 Flex업로더에서 Flex의 버그인지 모르겠는데, 첨부파일확장자를 Actionscript로 제한을 걸어 파일첨부 다이얼로그 창에서 열람가능한 파일 확장자 목록을 제한했다고 하더라고 그 다이얼로그창에서 강제로 탐색기의 내의 파일의 확장자를 변경하면 실제 허용되지 않는 파일도 업로드가 가능한 매우 위험스런 상황이 있었습니다. 제가 사용한 Flex코드만의 문제인지 다른 경우도 해당되는지 확인은 못했습니다만, 역시나 Flex나 Flash만으로는 정작 중요한 것은 못한다는 저의 비관론에 또 한표가 쏠리고 말았습니다. ㅠㅠ; 결국 Flex에서도 파일 확장자를 제한하지만 ColdFusion에서 다시한번 Check하는 구조로 갔습니다. 특히 쉘스크립트인데 jpg와 같은 허용확장자로 둔갑한 경우를 실제 이미지인지 파악하기 위한 것도 고려했구요, 사용자 파일이나 콘텐츠보호(다운로드 경로를 완전 숨기기 위한)를 위해 웹디렉토리 하위가 아니더라도 업로드 및 다운로드가 가능하게 되어 있어 파일 보안은 중요했습니다.
두번째는 역시 DB화가 다소 까다로운 Flex의 파일 업로드.. 파일자체의 업로드는 끝내주지만, 업로드된 항목을 DB화하고, 게시글과 조인하도록 하기 위해서 별도의 읽기플러그인이 필요했습니다. 간단하게 CFML코드로 만들기 했지만 업로드만 해놓고 글을 작성안해버린다던지, 등등 의 예외사항을 고려하여 디스크 낭비를 막고자 Railo나 ColdFusion서버의 내장 스케줄러를 통한 임시업로드 공간을 주기적으로 삭제하여 잘못 업로드된 파일 정리가 가능합니다.(요건 테스트 버전에서는 빠져 있고, 실제 사용자화면에서는 어케 보여드릴 수 없는 그런 것이 아니라서 패스~)
마지막은 역시나 한글파일명의 첨부파일들이 문제거리 였습니다. 한글, 한자, 특수문자, 공백 등 사용자가 맘대로 지정한 파일명을 가공없이 그대로 제공하려고 노력했습니다만 일단 시스템간 문제가 되는 공백만 _로 치환하고 나머진 그대로 적용되도록 했습니다. 별도의 다운로더 처리코드가 있어 브라우저별 헤더가 다른 부분도 골치긴 했지만 어케 했는지 기억도 안나는데 암튼 어케 해서 그럭저럭 되는 것 같군요.ㅋㅋ (무성의한 설명..ㅋㅋ)
http://www.cflab.com(관리자로 게시글을 읽으려면 123456을 비밀번호로 입력)에서 테스트 가능합니다. 참고로 세션을 제거하려면 상단 우측의 ?표시를 클릭하시면 로그인된 세션이 제거됩니다.

|


ColdFusion (73)
Comments