전자상거래 시스템 운영 및 관리

   3.전자상거래 컨텐츠 개발

      6. 프로그래밍 언어Ⅰ - CGI

CGI

 

① CGI(Common Gateway Interface)의 기본

CGI는 웹서버에 있어 사용자의 요구를 응용 프로그램에 전달하고 그 결과를 사용자에게 되돌려주기 위한 표준적인 방법이다. 사용자가 하이퍼링크를 클릭하거나 웹 사이트의 주소를 입력하여 요청하면 웹 서버는 요청된 페이지를 보내준다. 하지만 사용자가 웹 페이지의 양식에 내용을 기재하여 보냈을 때는(예를 들어 회원 가입, 이벤트 신청 등) 응용 프로그램에 의해 처리될 필요가 있다. 그래서 웹 서버는 사용자의 입력 정보를 받으면 조그만 응용 프로그램에 전달하는데, 이 프로그램은 데이터를 처리하고 필요에 따라 확인 메시지를 보내주기도 한다. 이렇게 서버와 응용 프로그램 간에 데이터를 주고받기 위한 방법이나 규약들을 CGI라고 부른다. CGI는 웹의 HTTP 프로토콜의 일부이다.

 

·CGI에서 'Common'은 플랫폼에 관계없이 각 클라이언트와 서버, 그리고 게이트웨이 프로그램이 공유하는 표준을 의미한다.

·CGI에서 'Gateway'는 CGI가 이질적인 두 시스템의 통로 역할을 맡고 있음을 의미한다.

·CGI에서 'Interface'는 개발자가 HTTP 서버의 전체적인 프로그램 구조를 모르더라도 입·출력에 관련된 부분만 이해하면 개발할 수 있다는 의미이다. 따라서 개발자는 단지 각 모듈간의 인터페이스에 대한 이해만 하면 된다.

·CGI는 외부 프로그램과 웹 서버(HTTP Server)를 연결하는 규약으로 CGI를 수행하는 외부 프로그램을 모두 포함하여 말한다

·CGI는 별도의 외부 프로그램으로, 웹 서버와는 별도로 설치해야 한다.

·CGI 프로그램의 프로그램 도구로는 펄, C/C++, 비주얼 베이식, 애플 스크립트, Tcl 등이 있다.

·웹 서버와 프로그램 간의 인터페이스로서 사용자가 브라우저를 통해 서버로 보낸 데이터를 서버에서 작동 중인 데이터 처리 프로그램에 전달하고, 프로그램에서 처리된 데이터를 다시 서버로 되돌려 보내는 역할을 한다.

·결과 값은 서버를 통해 클라이언트에게 전송된다.

·CGI는 웹 하이퍼미디어 시스템과 외부 응용 프로그램이 서로 연계되기 위한 인코딩, 디코딩 방법과 데이터 교환의 방법을 정의한 표준이다.

·CGI는 웹 서버에서 외부 프로그램이나 소프트웨어를 실행하는 가장 간단한 방법이다.

 

② CGI의 환경 변수

CGI 프로그램은 웹 서버에서 실행되는 프로그램이다. 이 CGI 프로그램이 실행될 때 웹 서버는 현재 자신이 처해 있는 시스템 상황을 어떠한 변수의 집합 내에 설정해 놓는데 이를 CGI 환경 변수라고 한다. CGI 환경 변수는 웹 서버 기종에 관계없이 모두 HTTP 규약을 따른다. 해당하는 서버가 아파치인지 MS의 IIS인지에 따라 쓰이는 방법이 약간 다를 뿐 기본적인 CGI 환경 변수를 사용하여 프로그래밍을 하게 된다. 이를 이용해서 게시판이나 방명록을 실행할 때 게시물을 작성한 사람의 IP 주소 혹은 사용자 인증 상태, 그리고 특정 IP 주소로 접속한 사람에 대한 통제도 가능하다. 다음은 주로 쓰이는 CGI의 환경 변수를 열거한 것이다.

 

 

③ CGI의 동작 과정

사용자가 웹 브라우저를 이용하여 HTML의 FORM 태그로 데이터를 입력하면, 웹 브라우저는 접속되어 있는 웹 서버에 데이터를 보낸다. 데이터를 받은 웹 서버는 이 데이터를 CGI 프로그램에 넘기고, CGI 프로그램과 관련된 요청이면 CGI 프로그램을 실행시킨다. 웹 서버는 CGI 프로그램의 작동 결과를 웹 브라우저가 볼 수 있는 HTML 문서의 형태로 변환하여 변환된 결과를 웹 브라우저에게 넘긴다. 웹 브라우저는 실행 결과를 사용자에게 보여준다.

 

 

 

웹 쪽에서 입력 값들을 넘겨주는 FORM 태그의 구성은 다음과 같다.

 

 

④ CGI의 장·단점

 

◆ CGI의 장점

·서버를 일관된 방법으로 확장할 수 있다.

·모든 CGI는 표준 입력, 환경 변수에서 인수를 받고 표준 출력으로 그 결과를 출력한다.

·URL로 참조할 수 있다.

·서버 쪽에만 설치하면 된다.

 

◆ CGI의 단점

·클라이언트가 CGI 프로그램을 요청할 때마다 동시에 많은 수의 프로그램이 실행되므로 서버의 부담이 크다.

·검증되지 않은 CGI가 서버에 설치되면 보안에 문제가 생길 수 있다.

·대화형 페이지를 작성할 수 없다. 이것은 CGI의 문제라기보다는 지금까지 웹 시스템 자체가 단방향으로 설계되었기 때문에 발생하는 문제이다.

·HTTP 자체가 연결을 유지하도록 설계되지 않았기 때문에 연결을 계속 유지할 수 없다.

 

Tip!----------------------------------------------------------------------------

CGI 프로그램 도구

유닉스 셸 스크립트, 펄, C/C++, VB스크립트, Tcl, 비주얼 베이식

--------------------------------------------------------------------------------

⑤ CGI의 방식

 

◆ GET 방식

·각 입력값들이 기본 URL에 붙는 인수(PARAMETER)로서 첨가되어 CGI 프로그램으로 값을 넘겨준다.

·GET 방식을 이용하며 그 입력값들이 환경 변수의 하나인 QUERY_STRING에 들어가서 전달된다. CGI 스크립트는 그 QUERY_STRING에 들어 있는 값을 읽는다.

·get METHOD는 FORM 태그를 사용하지 않고 바로 URL에 인수를 첨가하여 사용할 수 있다. 입력값이 많지 않거나 보안이 필요없는 경우에 사용하는 데이터 전달 방식이다.

 

◆ POST 방식

·POST 방식은 STDIN을 이용하므로 데이터 양에 제한이 없으며 환경 변수들은 STDIN과 함께 전달된다. 입력값들이 인코딩되어 넘어오기 때문에 CGI에서 그 값들을 디코딩해야 한다.

·입력값이 노출되지 않기 때문에 보안성이 높아 선호하는 방식이다

 

⑥ 환경 변수

 

◆ 서버에 대한 HTTP 정보를 나타내는 환경 변수

 

 

◆ 클라이언트의 요청에 따른 환경 변수

 

 

⑦ CGI 프로그래밍

 

◆ 펄(Perl : Practical Extaction and Report Language)을 이용한 CGI 프로그래밍

·말 그대로 텍스트 파일을 검색하여 실용적인 정보를 추출(Extract)하고, 그 정보를 가공하여 보고(Report)하는 데 아주 적절한 언어이다.

·C와 유사한 문법 형태를 띄면서도 C나 sed, awk, sh 셸 스크립트의 가장 좋은 특성들을 결합한 언어이다.

·인터프리터 언어이며 이식성이 뛰어나다. 인터넷상에서 무료로 자신의 시스템에 맞는 펄 인터프리터를 구할 수 있으므로 비용면에서도 큰 장점이 있다.

·펄은 텍스트 파일의 처리와 문자열 처리에서 아주 뛰어나므로 HTML 문서를 다루기에 적합한 언어이다.

 

◆ 셸 스크립트를 이용한 CGI 프로그래밍

·셸상의 명령을 수행하는 방법으로, 유닉스의 셸 스크립트는 도스에서 보면 일종의 배치 파일과 비슷한 구조로 되어 있다. 간단한 출력 제어를 통해 필요한 함수를 불러 쓸 수 있다.

·단점 : 대량의 데이터 손실이 우려되고, 펄이나 C보다는 작성하기 어렵다.

 

◆ C 언어를 이용한 CGI 프로그래밍

·일반적으로 C는 고급 언어이면서, 저급 언어의 특징을 가지고 있어서 어느 계열의 컴퓨터라도 잘 이식할 수 있는 특징을 지닌다.

·장점 : 다른 프로그램에 비해 처리 능력이 빠르다.

·단점 : 컴파일 언어인 C 언어는 펄에 비해 수정이 어렵다.