CGI 프로그램의 기능은 강력하지만 바로 이 때문에 CGI 개발자나 시스템 관리자로서 CGI 프로그램 작성 및 설정에 주의를 기울이지 않으면 시스템에 허점이 생길 것입니다. 이 기사에서는 CGI의 보안 문제에 대해 설명합니다.
3. CGI의 안전성
CGI 프로그램의 기능은 강력합니다. 일반 프로그램의 기능을 가질 수 있을 뿐만 아니라 프로그램 결과를 웹에 게시할 수도 있습니다. 그러나 CGI 프로그램의 기능이 너무 강력하기 때문에 CGI 개발자나 시스템 관리자로서 CGI 프로그램 작성 및 설정에 주의를 기울이지 않으면 시스템에 허점이 생겨 일부 불법 사용자가 이점을 누릴 수 있습니다. 그들 중.
여기에 언급된 보안은 CGI 사양으로 인한 것이 아니라 부적절한 프로그래밍 및 시스템 설정으로 인해 발생합니다. CGI 사양을 사용하면 사용자는 서버의 컴퓨팅 성능을 활용할 수 있습니다. 이는 서버에서의 부적절한 계산으로 인해 시스템 보안이 취약해집니다. 아래에서는 UNIX 시스템의 CGI 보안 취약점을 설명합니다. 이 취약점은 매우 일반적입니다.
# !/usr/local/bin/perl
# formmail.cgi
"cgi.pl"이 필요합니다.
# "formname" 필드의 제목: 헤더를 사용하여 이메일 응용 프로그램 "/bin/mail"을 시작합니다.
open (MAIL, "|/bin/mail -s '".$input{"formname"}."' webweave");
# 메시지 본문에 "formcontents" 보내기 필드를 추가합니다.
PRint MAIL $input{"formcontents"};
닫기(메일);
종료(0);
이 예에서 CGI 프로그램은 양식 정보를 /bin/mail에 제출하고 이를 webveave 서버로 보냅니다. 대부분의 경우 이 CGI 프로그램은 정상적으로 작업을 완료할 수 있지만, 이 CGI 프로그램은 사용자가 WEB 양식에 입력한 정보를 필터링하지 않으므로 보안상의 위험이 따릅니다. 사용자나 다른 목적을 가진 사람이 잘못된 정보를 입력할 경우 시스템 오류가 발생하거나 부당한 권한을 얻을 수 있습니다.
예를 들어, 사용자는 WEB 양식의 "formname"에 다음 내용을 입력합니다.
"ls /etc/passwd '[email protected] #'
/etc/passwd의 내용은 사용자의 웹 브라우저에 표시됩니다. 이 UNIX 시스템의 passwd 파일에 그림자가 없으면 사용자는 이 내용을 사용하여 crack jack 또는 crack john!을 사용하여 암호를 해독할 수 있습니다.
앞서 언급했듯이 CGI 보안은 프로그래머와 시스템 관리자 모두의 책임입니다. 이제 두 사람 모두가 주의해야 할 사항에 대해 이야기하겠습니다.
시스템 관리자의 업무:
1. 프로그래머와 협력하여 서버 보안에 대한 정보를 공유하고, 서로의 코드를 동시에 확인하며, 적시에 코드의 보안 문제를 발견합니다.
2. 좋은 서버 소프트웨어를 사용하고, 서버 소프트웨어의 웹사이트를 자주 방문하여 최신 정보를 알아보세요.
3. 서버 사용자를 특정 네트워크 호스트로 제한하고, 서버의 보안 관리 기능을 사용하고, 라우팅 접근 제어 등을 설정합니다.
4. CGI 기능을 제한하고, 일부 고급 서비스를 신뢰할 수 있는 사용자로 제한하고, 테스트된 CGI 프로그램의 사용을 개발자로 제한하고, 테스트된 CGI 프로그램만 사용자에게 제공합니다.
5. 타인의 CGI 프로그램을 사용할 때에는 코드를 주의 깊게 확인하세요.
6. CGI 프로그램의 사용을 보호된 환경으로 제한하고, 서버를 권한이 없는 사용자 액세스로 설정하고, 특히 CGI 프로그램용으로 실행 중인 계정이나 그룹을 설정하십시오.
7. CGI 프로그램을 실행하는 서버를 방화벽 외부에 설치해야 합니다. CGI 프로그램을 실행하는 서버는 방화벽 내부에 설치하는 경우 불법 사용자가 보안 취약점을 발견할 수 있으므로 주의해야 합니다. CGI 프로그램 서버에서는 방화벽 내의 모든 호스트를 제어할 수 있습니다!
8. 사용자가 악의적으로 다수의 CGI 프로그램을 실행하여 서버 과부하를 일으키는 것을 방지하기 위해 CGI 프로그램의 실행 우선순위를 낮춥니다.
9. 네트워크 보안에 관한 이메일을 구독하고 네트워크 보안 뉴스 그룹에 참여하십시오.
CGI 프로그래머 채용:
1. 시스템 관리자와 협력하여 시스템의 보안정보를 파악하고, 서로의 코드를 확인한다.
2. 믿을 수 있는 도서관 프로그램을 사용하고, 도서관 프로그램의 소스코드를 확인해보세요.
3. REMOTE_HOST에서 클라이언트 이름을 얻고 일부 고급 기능을 신뢰할 수 있는 클라이언트로 제한합니다.
4. 웹 서버에서 HTTP 비밀번호 확인 기능을 제공하는 경우 HTTP 비밀번호를 사용하여 접근을 제한하세요.
5. 사용자 입력을 필터링하고 잘못된 입력 데이터를 제거합니다.
6. 악의적인 사용자가 대량의 데이터를 입력하여 서버에 과부하를 주지 않도록 입력 데이터 크기를 제한합니다.
7. 사용자가 명령 해석기를 호출하거나 다른 애플리케이션의 보안 취약점을 악용하는 것을 방지하려면 사용자 데이터를 다른 애플리케이션으로 전달하지 마십시오.
8. CGI 프로그램에서 취약점을 발견하면 아무에게도 알리지 말고, 프로그램에 댓글을 남기지 말고 즉시 취약점을 패치해야 합니다.
9. 공격자가 되는 방법을 배우고 CGI 프로그램의 보안 취약점을 찾아보세요.