본문 바로가기

프로그램132

Ajax Application Hijacking Security 1. Ajax어플리케이션 하이재킹 자바스크립트가 가진 특성 때문에(동적인 측면) 하이재킹으로 인한 보안 문제가 일어난다. 함수를 선언하고 나서 후에 재정의 할 수 있는 특징 때문이다. ex) 실수로 인한 함수 덮어쓰기 자바스크립트의 특성상 같은 함수 이름이 들어가 있을 경우 나중의 함수가 호출된다. 이를 막기 위해 네임스페이스(namespace) 개념을 도입하면 된다. var Utils={}; Utils.debug=function(){…}; 하지만,실수로 코드를 덮어쓰는 것을 막기 위해 힘쓰지만 의도적으로 덮어쓰면 자신의 원하지 않게 동작하거나 멈출 수 있다. 그림 > 같은 범위의 같은 이름으로 선언되었을 때 마지막에 선언된 함수가 전에 선언된 함수를 덮어쓴다. 그림 7-2>분리된 네임스페이스는 자바스크.. 2009. 4. 20.
AOP (Aspect Oriented Programming) AOP 등장 C 언어에서 시작된 절차적 프로그래밍을 걸쳐 유지보수성과 확장성을 가지는 객체지향(OOP)적 프로그래밍을 현재 밟고 있다. 현재 객체지향적인 프로그래밍을 지향하면서 개발자들은 좀 더 편리하고 유지보수가 편한 방법을 찾게 되었고... 그에 맞춰 등장한것이 AOP 관점 지향 프로그래밍이다... 공통적인 쓰이는 관심사들... 즉 로깅, 트랜잭션 처리, 통계 처리, 권한 처리등 모든 모듈에서 공통적으로 쓰이는 코드들.. 하나의 클래스를 완성하기 위해서 여러 군데 동일한 코드를 복사해서 갖다붙이는 코드들을 공통 관심사라고 볼수 있다. AOP 는 이 공통 관심사를 좀더 유연하게 중복되지 않게 처리하기 위한 OOP 의 보완적인 프로그래밍 구조를 지원하기 위해 탄생하게 되었다. AOP 개념 Aspect O.. 2009. 4. 15.
Apache-Ant 사용법 고수로 가는 지름길! Jakarta Project 이클립스 기반 프로젝트 필수 유틸리티: CVS, Ant, JUnit 두 책의 ant 부분을 보고 정리하였습니다. # build.xml 파일의 기본구조 ... ... ... ... ... # project 태그 1) name : 프로젝트의 이름 2) default : Ant를 실행할때 target을 지정하지 않은 경우 기본적으로 사용할 target (필수) 3) basedir : 경로 계산할때의 기준 디렉토리. 지정하지 않은 경우 현재 디렉토리가 basedir로 사용된다. basedir 프로퍼티의 값으로도 사용된다. # target 태그 1) name : 타켓의 이름 (필수) 2) depends : 이 타겟이 의존하고 있는 타겟의 목록. 각 타켓의 이름은 .. 2009. 3. 29.
PHPEclipse 환경에서 PHP 리모트 디버깅하기 Zend Studio를 사용하면 서버상에서 돌아가는 php를 리모트 디버깅할 수 있지만, 이넘은 유료인데다가 지금까지 애지중지 사용하고 있는 Eclipse를 버려야한다는 문제가 있어서 - 아무래도 Eclipse가 Zend Studio보다는 내 스타일이다 - 어떻게든 Eclipse 내에서 리모트 디버깅을 시도해보고 있다. 일단 ibm의 developerWorks[링크]에서 증거사진을 발견. 이 환경을 만들기 위해 사용했다는 세팅을 그대로 따라해보았다. 참, 개발환경은 PC(Windows XP)에서 Eclipse 3.1.1을 사용중이며, 웹서버에는 리눅스 Fedora Core 4 위에 apache 2.0.55와 PHP 5.0.5를 깔아서 쓰고 있다. 1. php 구동서버에 디버거모듈 설치 - http://d.. 2009. 3. 6.
OllyDbg/Hiew 분기 어셈코드 넣는 방법 바이너리로 되어있는 exe파일에 section을 추가하고, Import table을 추가한뒤에 새로 imported된 API를 호출해 기존프로그램에 기능을 추가하는.. 일종의 ReverseMe 프로그램을 만지작 거리다 왔다. 간단히 두개의 API를 import테이블에 추가해서 호출하면 되는데 공간이 없는 바람에 section을 새로 만들고.. 언제나 그렇듯이 뭔가가 하나가 플러스되면 항상 삽질도 반비례하게 플러스되고, import table에 함수를 넣는과정에서도 역시 삽질.. 그리고 마지막으로 기능추가 어셈코드를 추가할때도 잠깐 삽질.. 그 과정을 거쳐 몇시간만에 끝을냈다. 씨~ 이건 완전 노가다야!! 역시 소스코드가 없는 프로그램을 조작한다는건 정말 만만치 않은 작업이라는걸 새삼 깨닫게 된다. 물론 .. 2009. 3. 1.