제목 | Apache 웹 서버 CGI 모듈 사용하기 | ||||||
글쓴이 | 이지섭 | 작성일 | 2018-11-02 | 수정일 | 2024-08-09 | 조회수 | 10217 |
Apache 웹 서버에서 CGI (Common Gateway Interface) 모듈을 사용하는 방법이다.
1) 먼저 LoadModule 부분에서 아래와 같은 mod_cgid.so 부분의 주석(#)을 제거하여 아파치에서 CGI 모듈이 사용되도록 한다. 아파치 설정 파일 conf 폴더에 httpd.conf 파일에서 작업한다. LoadModule cgid_module modules/mod_cgid.so
2) alias_module 설정 부분에서 아래와 같이 /cgi-bin/ 의 경로를 설정한다. 모듈 설정 부분이 이미 httpd.conf 설정 파일에 들어 있으니 찾아서 입력해주면 되겠다. Apache 설정에서 # 은 주석이다. <IfModule alias_module> #ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" ScriptAlias /cgi-bin/ "/home/ubuntu/cgi-bin/" </IfModule>
3) 위에서 설정한 디렉토리에 대하여 또 설정한다. Options 부분에 ExecCGI 가 있어야 한다. 디렉토리 설정 부분을 새로 추가한다. /usr/local/apache2/cgi-bin/ 디렉토리 같은 경우는 httpd.conf 파일에 설정이 이미 들어 있다. <Directory "/home/ubuntu/cgi-bin">
AllowOverride All
Options ExecCGI
SetHandler cgi-script
Require all granted
Order allow,deny
Allow from all
</Directory>
4) mime_module 설정 부분에서 cgi-script 파일에 대한 확장자를 지정한다. 핸들러(처리기)를 지정하는 것이다. mime_module 설정 부분을 httpd.conf 파일에서 찾아서 수정한다. <IfModule mime_module>
AddHandler cgi-script .cgi .pl .py
</IfModule>
5) Java 환경의 Tomcat 서버와 연동을 하는 경우이면, uri 매핑 부분에서 cgi-bin 으로 시작하는 경로는 Apache 웹 서버에서 처리되도록 설정한다. (! : 느낌표를 맨 앞에 입력하여 배타 처리한다.) !/cgi-bin/*=worker1
6) CGI 스크립트를 작성한다. bash 쉘 스크립트이다. 2) 번에서 설정한 디렉토리에 작성한다. #!/bin/bash echo "Content-type: text/html" echo "" echo "Hello.<br/>"
7) 위에서 작성한 파일에 실행 권한을 부여한다. owner, group, other 모두에서 실행될 수 있도록 한다. chmod a+x test.cgi
8) 브라우저에서 /cgi-bin/ 경로로 위의 파일을 호출한다. Hello. 단어가 출력된다. https://www.jisblee.me/cgi-bin/test.cgi
9) C 언어로 cgi 프로그램을 작성할 수 있다. /cgi-bin/ 으로 설정한 디렉토리에 아래와 같은 소스(파일명 : hello.c)를 작성하고, gcc -o hello.cgi hello.c 와 같이 컴파일하여 실행 파일(hello.cgi)을 만들고 호출하면 되겠다. #include <stdio.h> int main() { printf("Content-type: text/html%c%c", 10, 10); printf("Hello, World!"); return 0; }
10) CGI 취약점 입력 값을 조작하여, 시스템 명령을 실행할 수 있는 취약점이 있다. 꼭 필요한 경우에만 주의를 기울여 사용해야 하겠다.
| |||||||
로그인 | Language : |