mootools 라이브러리 Ajax 관련 데모의 오류 원인과 해결방안
1. 오류발생원인
로컬 서버에서 실행한 Ajax 관련 데모에서 오류가 발생되는 이유는 다음과 같다. 결과 값을 가지고 출력하는 화면이 로컬 서버에 저장된 동일 도메인이 아니라 mootools.com 하부에 있는 페이지에서 실행되었기 때문이다. Ajax는 샌드박스(SendBox) 보안 모델이 포함되어 있는데 그 결과 Ajax 코드(특히 XMLHttpRequest 객체)는 실행 중인 동일한 도메인에만 요청 받은 객체를 생성한다.
네트웍으로 전송해 자동으로 실행할 수 있는 이동 가능한 코드에는 보안의 문제가 항상 따르는데 이러한 코드가 갖고 있는 보안 문제를 처리할 수 있도록 웹 브라우저 업체에서 실제 컴퓨터 자원에 대한 접근을 제한하는 공간인 샌드박스를 만들어 자바스크립트 코드가 그 안에서만 실행될 수 있도록 했다. 그런 이유로 Ajax 애플리케이션은 사용자의 하드 디스크에 들어있는 내용을 읽거나 변경할 수 없다.
자바스크립트 코드는 사용자가 서버에서 전송받는 즉시 실행하는데 사용자가 다른 서버에서 전송받은 자바스크립트를 마음대로 실행할 수 있도록 내버려둔다면 구조를 제멋대로 변경하여 Ajax 실행된 화면을 마음대로 변경해 버릴 수 있을 것이다. 하지만 자바스크립트 보안 모델이 지정한 대로 프로그램의 권한과 활동 범위를 제한하면 제 3의 사이트에서 Ajax 클라이언트 프로그램을 전송받아 가고, 사용자가 입력하는 데이터를 사용자 모르게 자신들의 서버에 전송하도록 서버 주소를 바꾸는 등의 일이 불가능하기 때문에 보안 문제를 해결할 수 있다.
참고문헌 : - Ajax 인 액션(p.289 ~ p291)
- Ajax 마스터하기, Part 2: JavaScript와 Ajax를 이용한 비동기식 요청 (한글)
(http://www.ibm.com/developerworks/kr/library/wa-ajaxintro2/)
'Dev Story > dev' 카테고리의 다른 글
DTD(문서 타입 정의) 문서 타입 선언 종류 (0) | 2007.09.18 |
---|---|
IFRAME 옵션 (0) | 2007.09.17 |
이미지 존재 여부 체크 (0) | 2007.09.05 |
[CSS] DL사용시 공백 문제 (0) | 2007.08.17 |
[css] CSS2 Reference (0) | 2007.08.10 |