20
February
2010
Adobe ColdFusion, BlazeDS(Railo), LCDS(FDS) 보안업데이트(Security Updates)
Category :
Flash/RIA
,
Railo
,
Securities
,
ColdFusion
Posted by
장창학 at 1:54 AM
Adobe에서 보안패치가 배포되었습니다. Flex와 관련있는 BlazeDS, LCDS, FDS, LiveCycle을 비롯해서 Flex엔진이 내장된 ColdFusion 7,8,9버전 모두 해당됩니다. 매우 심각한 보안패치이니 관련 제품 사용자는 업데이트 하시길 바랍니다. 다행이 저는 ColdFusion엔진이 Railo라서 상관은 없지만 BlazeDS는 영향을 받겠네요. Railo에 내장된 BlazeDS에도 적용이 될련지 확인해 보고 관련이 있다면 Posting하겠습니다. 현재 적용해 본 결과 일부 Railo서버에서는 문제가 있네요.(For some, Railo server error occured.) 최근에 Railo를 설치한 경우라면 문제는 없는 것 같은데.. 만약 최근에 설치하였거나 일단 적용해 보고자 한다면 다음의 경로에 BlazeDS의 보안데이트가 적용된 flex-messaging-core.jar 파일을 덮어 씌우세요.(미리 flex-messaging-core.jar를 백업하시길 바랍니다. 문제 발생시 원본으로 대체하면 정상적으로 작동합니다.)
Windows환경에서는 C:\Program Files\{Railo설치디렉토리}\lib\ 이며, Linux환경에서는 일반적으로 /opt/railo/lib 가 되겠습니다. 동일한 파일이 기존에 있으므로 덮어 씌우면 되는데, 문제가 발생하는 환경이 있으므로 Railo자체의 보안업데이트를 기다리는 것이 나을 듯 합니다. Railo Team에서도 관련내용을 확인했다고 합니다. (http://groups.google.com/group/railo/browse_thread/thread/a2883c03b99526d4) 만약 강제로 적용하여 Railo를 재시작해도 문제가 발생한다면 원래 설치된 버전의 Railo설치파일을 다운로드 받아 압축을 푼 후 flex-messaging-core.jar만 다시 복원해 주면 됩니다.
19
February
2010
IsImageFile 함수를 이용한 보안(Security) Tip
Category :
ColdFusion
,
Railo
Posted by
장창학 at 3:19 PM
가끔이기는 하지만 간혹 파일업로드가 가능한 게시판을 구축하여 운영하다보면 꼭 파일의 확장자를 강제로 바꾸어 업로드를 시도하는 분들이 있습니다. 가령 실제 파일은 delete.sh이나 delete.exe파일인데(둘다 각각 서버시스템에서 실행될수 있는 각별히 신경써야 하는 파일입니다.), 이를 탐색기에서 강제로 delete.jpg파일로 변경해서 마치 이미지 파일인것 처럼 위장해 개발자가 쳐놓은 보안장벽인 "업로드 파일 확장자필터링"를 우회하여 업로드하게 됩니다. 물론 대부분의 시스템은 JPG파일를 일반 바이너리 실행파일로 구동되지 않지만 일단 시스템의 취약점을 이용해서 충분히 시스템 전체를 포맷해 버리는 최악의 상황을 연출할 수 있고, 또 그런 보고도 많이 있습니다.
ColdFusion 8 또는 Railo 3이상부터는 IsImageFile()함수를 지원하고 있는데, 이는 서버상의 어떤 파일이 실제로 이미지 파일인지 아닌지 확인해주는 함수입니다. 가령 업로드를 구현할때 위에서처럼 delete.jpg파일이 실제 이미지 파일이 아닌 경우 false를 반환하게 됩니다. 다음의 예를 확인해 보겠습니다. 다음의 예는 어떤 디렉토리내의 파일을 조사하여 이미지 파일인지 아닌지 확인하는 것인데, jpg와 같이 확장자만 보고 이미지 파일인지 아닌지 조사하는 것이 아니라, 맨마지막의 파일의 예처럼 실제 이미지 파일이 아닌데(sample.doc) 마치 이미지 파일처럼(sample1.jpg) 확장자가 바뀌어 있는 경우 이미지파일이 아니라고 false를 반환하는 예입니다.
Demo view : http://www.nooree.com/samples/railogetfileinfo/
<cfdirectory action="LIST" name="Files" directory="#ExpandPath('./')#" filter="*.*" sort="Type ACS, Name ASC">
<cfoutput query="Files">
#name# <br />
<cfdump var="#IsImageFile("#name#")#">
<br />
</cfoutput>
18
February
2010
Railo에서 Flex시작!!
Category :
Flash/RIA
,
Railo
,
ColdFusion
Posted by
장창학 at 3:24 AM
Railo Blog에서 언젠가 본 예제를 이제서야 해보고 있습니다. 2006년도에는 Flex에 미쳐서 나름대로 공부도 열심히 하고 그랬는데 회사의 업무와 전혀 상관없던 시절이라(당시는 주로 문서작업이 많은 컨설팅파트였음) 그냥 대강 대강 휙휙~ 보고 말았지요. 간단한 메모장 한개 만들고 "이제 다 했군~" 했던 시절인데 그뒤로 바로 그만두어 Flex 책은 그뒤로도 몇권 사긴 했지만(예전의 Himto.com으로 유명했던 화려한 ColdFusion실력을 자랑했던 바닐라로이의 김진욱씨가 쓴 Flex3노하우바이블 등등) 이거 정말 뭔소린지.. ㅠㅠ; 역시 언어공부란 계속 쓸 수 있는 상황이 아니면 사실상 잊어먹게 되지요. 그래서 제가 회사에서 팀장이란 권력(?)으로 회사경영진&동료, 부하직원들의 무한 무관심을 무릅쓰고도 여기저기 ColdFusion을 접목하는 이유이기도 합니다. ㅎㅎ
암튼 오늘 Railo blog에서 나온데로 Railo에서 RemoteObject를 쓰는 간단한 예제를 따라해봤습니다. ㅋㅋ Railo는 Flash Remoting을 지원하고 있습니다. Railo가 설치된 웹루트 디렉토리의 WEB-INF/flex/services-config.xml에 보시면 연결되는 Geteway를 살펴볼 수 있습니다. Flex의 경우 flex2gateway나 flashservices/gateway 둘다 쓸 수 있습니다. 사실 Flex에 대한 기억이 가물거리기 때문에 잘 알지는 못하지만 전통적인 Flash Remoting방식보다는 flex2gateway가 더 낫지 않을까 생각해 봅니다.(어디까지나 추측입니다. ㅠㅠ) 아무래도 Flex공부는 다시 해야 할 듯 합니다. Flex빌더 데모를 깔고, 좀 낯선 환경에 적잖히 당황!!(내가 정작 이것을 공부했다고 말할 자신이 있는가?? 너무 무관심했군)
암튼 RomoteObject에서 호출할 CFC를 하나 맹글고, Flex에서 다음과 같이 호출하면 됩니다. 와~ 신기신기!!ㅋㅋ Hello.cfc를 만들어 Railo가 설치된 웹루투에 저장합니다. Flex에서 컴파일된 파일의 위치는 웹디렉토리내 어디서나 상관은 없습니다. Hello.cfc를 브라우저에 직접호출하면 다음과 같이 Dump됩니다.

Flex Demo 미리보기 : http://www.nooree.com/samples/railoflex/railo.html
Hello.cfc
<cfcomponent>
<cffunction name="echo" access="remote">
<cfreturn "Railo 연결성공! 안녕하세요?">
</cffunction>
</cfcomponent>
Railo.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="{service.echo()}">
<mx:RemoteObject id="service" destination="ColdFusion" source="Hello" endpoint="http://www.nooree.com/flashservices/gateway/"/>
<mx:Label text="{service.echo.lastResult}" fontSize="20" color="#FFFFFF" fontWeight="normal"/>
</mx:Application>
15
February
2010
Windows7에서 FlashPaper2 가상프린터(Virtual Printer)를 인식하지 못할때
Category :
Utilities
,
Miscellaneous
Posted by
장창학 at 2:39 AM
2004년이후로 여전히 저는 예전의 Macromedia시절 PDF에 대항하기 위하여 내놓은 SWF기반의 문서포맷(?)인 FlashPaper2를 사용중입니다. 간단하게 인쇄옵션을 이용해서 문서를 PDF 또는 FlashPaper포맷(swf파일 포맷)으로 변환이 가능해서인데요. 특히 MS Word나 Powerpoint의 경우 보기 좋게 목차도 알아서 만들어주는 아주 기특한 녀석입니다. 물론 한국어 버전도 있고, 20여만원 미만으로 착한 가격을 가지고 있습니다.
그런데 이 FlashPaper2를 Windows Vista나 7에 설치하게 되면 프린터를 찾을 수 없다거나 일부 드라이버를 설치하지 못해 오류가 발생하기도 합니다. 분명 설치시 드라이버를 같이 설치합니다만, 알 수 없는 오류나, 호환성(Capability) 문제로 드라이버를 별도로 설치하려면 다음의 파일을 다운로드 하여 설치하여 보시길 바랍니다.
Download Installer
(Adobe Technote : Error - Could not find FlashPaper Printer)
13
February
2010
Portable ColdFusion Builder Beta3
Category :
ColdFusion Builder
Posted by
장창학 at 1:43 AM
Adobe에서 출시 준비중인 ColdFusion 전용 에디터(Dreamweaver와는 다른 Eclipse 기반의 순수 ColdFusion 개발도구)는 아직 베타버전이라 사용기간에 제한이 있습니다. 현재 Beta3이 최신 배포포본이지만 설치 후 사용가능한 날짜는 오늘로서 약 40여일에 지나지 않습니다. 아마 그전에 새로운 Beta4가 나오거나, 아니면 정식버전이 출시될 지 모르겠습니다만, Beta4까지 가지 않고 3월중 정식버전이 나오길 바래봅니다. 그래서, 저와 같이 생명에 제한이 걸려있는 이 Beta3을 굳이 설치하고 싶지 않는 분들을 위한 힌트 하나 드리고자 합니다.
저의 경우 Windows7환경과 Ubuntu9.10환경을 모두 이용중입니다. 물론 ColdFusion Builder는 Windows와 Mac만 지원합니다만, 어디서나 굴러가는(?) Eclipse의 특성상 몇가지 필수 파일만 추출하면 아무 Eclipse에서나 잘 적용됩니다. 호주의 ColdFusion개발자인 Mark Mandel의 포스트에서도 이야기가 나온것입니다만, Ubuntu에서는 그의 글을 참조하여 사용할 수 있습니다. 저의 경우는 Ubuntu에서 시넵틱관리자 또는 소프트웨어추가설치 옵션으로 Eclipse를 설치하지 않고, 직접 Eclipse.org에서 Linux용을 받아 압축을 풀고 아무디렉토리나 필요한 곳에 다운로드 받아서 그냥 사용합니다. 이 편이 업데이트나, Eclipse가 망가졌을때 지우기도 편리합니다.(Eclipse 디렉토리를 통째로 삭제하면 되니까..ㅋ)
Mark Mandel의 내용을 간략히 정리하자면, 우선 ColdFusion Builder Beta3 Mac버전을 받습니다. 우분투상에서 작업하려면 그가 만든 추출프로그램을 이용하면 되지만 사실 필요 없습니다. 다운로드한 Mac용 CFBuilder의 압축을 풀고 /cfbuilder_install.app/Contents/Resources/cfbuilder_install.app/Contents/Resources/Java/Disk1/InstData/Resource1.zip 파일을 뽑아 냅니다. Resource1.zip파일을 다시 압축을 해제하여, grab /Z_/dist/_macos_87b1877cbdff_zg_ia_sf.jar 파일을 뽑아냅니다. jar압축파일이므로 Ubuntu나 Windows의 대부분의 압축유틸리티들이 압축을 해제할 수 있습니다. 이 파일을 압축해제하면 features디렉토리와 plugins디렉토리가 나오는데 이 두 디렉토리를 Eclipse가 설치된 곳에 덮어 씌워 복사합니다.
Windows의 경우 다음과 같이 할 수 있습니다. Windows용 CFBuilder Beta3인 coldfusionbuilder_b3_install_win_121709.exe 파일을 다운로드하여 더블클릭하지 말고, 압축해제기(Winzip, Winrar, Alzip, 7Zip 등)로 특정폴더로 압축을 해제합니다. 가령 D:\의 coldfusionbuilder_b3_install_win_121709 폴더안에 압축을 해제했다면 D:\coldfusionbuilder_b3_install_win_121709\InstallerData\Disk1\InstData의 경로를 찾아가면, Resource1.zip 파일이 있습니다. 이 파일을 다시 압축해제하여 _windows_87b1876cbdf8_zg_ia_sf.jar 파일을 추출합니다. jar파일이지만 압축파일이므로 다시 압축해제기를 이용하여 압축을 풉니다. 가령 _windows_87b1876cbdf8_zg_ia_sf라는 폴더에 풀었다면 왼쪽 그림과 같은 구조가 보일 겁니다. 이 폴더의 이름을 CFBuilder 등 본인이 원하는 이름으로 지정한다음 D:\ 등으로 옮겨사용하거나, USB등에 옮겨 사용하면 됩니다. CFBuilder.exe를 더블클릭하면 Eclipse기반의 ColdFusion Builder가 실행됩니다.

<우분투에서의 CFBuilder>

<Windows에서의 CFBuilder>