³¯Â¥: 1996-03-17 | ±Û¾´ÀÌ: µµ¾Æ | 10178 ¹ø | ÇÁ¸°Æ® | ¸ÞÀϷκ¸³»±â

Á¦ 17°­ - CGI ¸í¼¼ - ÀÔ·Â


CGI´Â À¥ ¼­¹ö¿Í ¿ÜºÎ ÇÁ·Î±×·¥°úÀÇ ¿¬µ¿À» À§ÇÑ Ç¥ÁØÀ̹ǷÎ, À¥ ¼­¹ö¿¡¼­ CGI ÇÁ·Î±×·¥À¸·Î, CGI ÇÁ·Î±×·¥¿¡¼­ À¥ ¼­¹ö·Î, ¼­·Î Åë½ÅÇÏ´Â ¹æ¹ýÀÌ ¸¶·ÃµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. Åë½ÅÇÏ´Â ¹æ¹ýÀ̶ó ÇÏ´Â °ÍÀº À¥ ¼­¹ö°¡ Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¹ÞÀº ÀÔ·Â µ¥ÀÌÅ͸¦ CGI ÇÁ·Î±×·¥¿¡ ¾î¶»°Ô Àü´ÞÇϸç, ±× ¿Ü¿¡ ¿©·¯°¡Áö Á¤º¸µéÀ» ¾î¶»°Ô Àü´ÞÇÏ´À³Ä ÇÏ´Â °Í°ú ¿ÜºÎ ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» ¾îµð·ÎºÎÅÍ ¹Þ´À³Ä´Â °ÍÀÌ´Ù. Áï, °£´ÜÇÏ°Ô ¸»Çϸé ÀÔ·Â ¹æ¹ý°ú Ãâ·Â ¹æ¹ýÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½¿¡¼­ °¢°¢¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. CGI·ÎÀÇ ÀÔ·Â

À¥ ¼­¹ö´Â CGI·Î µ¥ÀÌÅ͸¦ Àü´ÞÇϱâ À§Çؼ­ ¼¼°¡Áö ¹æ¹ýÀ» »ç¿ëÇÑ´Ù. ù ¹ø° ¹æ¹ýÀº ȯ°æº¯¼ö¿¡ ÀÇÇÑ °ÍÀÌ°í µÎ ¹ø° ¹æ¹ýÀº Ç¥ÁØÀԷ¿¡ ÀÇÇÑ °ÍÀÌ´Ù. ¸¶Áö¸·À¸·Î ¸í·ÉÇàÀ» ÅëÇؼ­µµ ÀÔ·ÂÀ» Àü´ÞÇÒ ¼ö µµ ÀÖ´Ù. CGI ȯ°æº¯¼ö

Form ű׿¡¼­ Method¸¦ GETÀ¸·Î Çϰųª Isindex ű׸¦ »ç¿ëÇÏ´Â °æ¿ì, CGIÀÇ ÀÔ·ÂÀº ȯ°æº¯¼ö·ÎºÎÅÍ ¹Þ¾Æµé¿©Áø´Ù. À¥ ¼­¹ö´Â CGI ÇÁ·Î±×·¥À» ¼öÇà½ÃÅ°±â Àü¿¡ ´ÙÀ½°ú °°Àº ȯ°æ º¯¼öµéÀ» ¼³Á¤ÇØ ³õÀº ÈÄ¿¡ CGI¸¦ È£ÃâÇÑ´Ù. ´ÙÀ½Àº CGI ÇÁ·Î±×·¥ ¾È¿¡¼­ ÂüÁ¶ÇÒ ¼ö Àִ ȯ°æº¯¼öµéÀÇ ¸®½ºÆ®¿Í °¢°¢ÀÇ ÀǹÌÀÌ´Ù. ¼­¹ö°ü·Ã ȯ°æº¯¼ö

¼­¹ö¿¡ °ü·ÃµÈ ȯ°æº¯¼ö·Î¼­ ÀüºÎ httpd.conf¿¡ ¼³Á¤µÈ °ªÀ» µû¸¥´Ù. GATEWAY_INTERFACE(GET, POST)

À¥ ¼­¹ö°¡ µû¸£°í ÀÖ´Â CGI Ç¥ÁØÀÇ ¹öÀü. Çü½Ä: CGI/°³Á¤¹øÈ£

¿¹) CGI/1.1
SERVER_SOFTWARE(GET, POST)

ÀÎÆ÷¸ÞÀÌ¼Ç ¼­¹ö ÇÁ·Î±×·¥ÀÇ À̸§°ú ¹öÀüÀ» ´ã°í ÀÖ´Ù. Çü½Ä: À̸§/¹öÀü

¿¹) NCSA/1.5.1
SERVER_NAME(GET, POST)

¼­¹öÀÇ È£½ºÆ® À̸§, ¶Ç´Â DNS alias, ¶Ç´Â IP ÁÖ¼Ò

¿¹) syscon.soongsil.ac.kr
SERVER_PROTOCOL(GET, POST)

ÀÌ ¿äûÀÌ ¾î¶² ÇÁ·ÎÅäÄÝÀ» µû¸£°í ÀÖ´Â °¡¸¦ ³ªÅ¸³½´Ù. Çü½Ä: ÇÁ·ÎÅäÄÝ/°³Á¤¹øÈ£

¿¹) HTTP/1.0
SERVER_PORT(GET, POST)

¿äûÀÌ º¸³»Áø Æ÷Æ® ¹øÈ£. ÀϹÝÀûÀ¸·Î Web Server´Â 80 Æ÷Æ®¸¦ »ç¿ëÇÑ´Ù.

¿¹) 80
SERVER_ADMIN(GET, POST)

¼­¹ö°ü¸®ÀÚÀÇ e-mail address

¿¹) [email protected]
DOCUMENT_ROOT(GET, POST)

Web ServerÀÇ Document Root

¿¹) /home/htdocs
¿äû¿¡ °ü·ÃµÈ ȯ°æº¯¼ö

Request Message¸¦ ÅëÇØ Àü´ÞµÈ Á¤º¸°¡ ÀúÀåµÈ´Ù. AUTH_TYPE(GET, POST)

¼­¹ö¿¡¼­ »ç¿ëÇÑ ÀÎÁõÀýÂ÷. ÀÎÁõÀýÂ÷°¡ ¾øÀ» °æ¿ì¿¡´Â NULLÀÌ µÈ´Ù.

¿¹) Basic
CONTENT_TYPE(POST)

¼­¹ö¿¡ Àü¼ÛÁßÀÎ µ¥ÀÌÅÍÀÇ Çü½Ä. Method°¡ POSTÀÎ °æ¿ì¿¡¸¸ °ªÀ» °®´Â´Ù.

¿¹) text/html
CONTENT_LENGTH(POST)

POST ¿äû½Ã Ç¥ÁØÀԷ¿¡ Àü´ÞÇÑ ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù.

¿¹) 100
PATH_INFO(GET)

CGI ÇÁ·Î±×·¥¸í°ú Query»çÀÌ¿¡ ÁÖ¾îÁø Ãß°¡ÀûÀÎ »ó´ë °æ·Î Á¤º¸.

¿¹) /html/form
PATH_TRANSLATED(GET)

PATH_INFO¿Í °°Áö¸¸ °¡»ó °æ·Î°¡ ¼­¹ö»óÀÇ ½ÇÁ¦ °æ·Î·Î Çؼ®µÈ´Ù´Â °ÍÀÌ ´Ù¸£´Ù.

¿¹) /home/html/form
QUERY_STRING(GET)

URIÀÇ ÀϺηΠÀü´ÞµÈ µ¥ÀÌÅÍ·Î URIÀÇ ? ´ÙÀ½¿¡ ÀÖ´Â ºÎºÐÀÌ´Ù.

¿¹) name1=586&name2=486
REQUEST_METHOD(GET, POST)

¿äû¿¡´ëÇÑ µ¥ÀÌÅÍ°¡ URI(GET) À̳ª STDIN(POST)·Î Àü¼ÛµÇ¾úÀ½À» ¸í½ÃÇÑ´Ù.

¿¹) POST
REMOTE_HOST(GET, POST)

¿äûÀ» ÇÑ È£½ºÆ®ÀÇ À̸§. À¥ ¼­¹ö°¡ ÀÌ Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø¾úÀ» ¶§´Â REMOTE_ADDRÀÌ ¼³Á¤µÇ¸ç ÀÌ Á¤º¸´Â ¼³Á¤ÀÌ µÇÁö ¾Ê´Â´Ù.

¿¹)syscon.soongsil.ac.kr
REMOTE_ADDR(GET, POST)

¿äûÀ» ÇÑ È£½ºÆ®ÀÇ IP ÁÖ¼Ò¸¦ ³ªÅ¸³½´Ù.

¿¹) 210.206.89.230
REMOTE_USER(GET, POST)

ÀÎÁõÀýÂ÷¸¦ °ÅÃÆÀ» °æ¿ì »ç¿ëÀÚÀÇ ID¸¦ ³ªÅ¸³½´Ù.

¿¹) artech
SCRIPT_NAME(GET, POST)

½ÇÇàÁßÀÎ CGI ÇÁ·Î±×·¥ÀÇ À̸§.

¿¹) /cgi-api/env.plx
Ŭ¶óÀ̾ðÆ®¿Í °ü·ÃµÈ ȯ°æº¯¼ö(HTTP)

HTTP_ º¯¼ö´Â Ŭ¶óÀ̾ðÆ®¿¡ ÀÇÁ¸ÇÑ´Ù. µû¶ó¼­ ¸ðµç ȯ°æº¯¼ö°¡ Ç×»ó Á¸ÀçÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. HTTP_ACCEPT(GET, POST)

Ŭ¶óÀ̾ðÆ®°¡ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â MIME ŸÀÔÀÇ ¸®½ºÆ®. °¢ Ç׸ñÀº ','¿¡ ÀÇÇؼ­ ±¸ºÐµÈ´Ù. Çü½Ä: type/subtype, type/subtype

¿¹) image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
HTTP_ACCEPT_CHARSET(GET, POST)

»ç¿ëÁßÀÎ ¹®ÀÚ ¼ÂÆ®

¿¹) "iso-8859-1,*
HTTP_ACCEPT_LANGUAGE(GET, POST)

ÇöÀç ¼³Á¤µÈ ¾ð¾îÁýÇÕ

¿¹) ko, fr
HTTP_CONNECTION(GET, POST)

connectionÀÇ Å¸ÀÔ

¿¹) keep-alive
HTTP_COOKIE(GET, POST)

Web¿¡¼­ »óÅÂÁ¤º¸¸¦ À¯ÁöÇϱâÀ§ÇØ »ç¿ëµÇ´Â cookie Á¤º¸

¿¹)name=111&pass=222
HTTP_HOST(GET, POST)

¼­¹öÀÇ È£½º ¸í

¿¹) syscon.soongsil.ac.kr
HTTP_REFERER(GET, POST)

ÇöÀç ¹®¼­¿¡ ¸µÅ©¸¦ Á¦°øÇÑ ¹®¼­ÀÇ URL.

¿¹) http://qaos.com/index.htm
HTTP_USER_AGENT(GET, POST)

ºê¶ó¿ìÀúÀÇ Á¾·ù. Çü½Ä: software/version

¿¹) Mozilla/4.0b2 (Win95; I)
HTTP_PRAGMA(GET, POST)

¼­¹ö¿Í Ŭ¶óÀ̾ðÆ® »çÀÌ¿¡ Á¸ÀçÇÏ´Â ³ëµåÀÇ µ¿ÀÛÀ» Á¤ÀÇ

¿¹) no-cache
Ç¥ÁØ ÀÔ·Â

ÀÔ·Â Æû¿¡¼­ POST¸¦ »ç¿ëÇÏ¿´À» °æ¿ì¿¡´Â Ç¥ÁØÀÔ·ÂÀ¸·Î µ¥ÀÌÅÍ°¡ Àü´ÞµÈ´Ù. ÀÌ ¶§µµ µ¥ÀÌÅÍ°¡ ÀÎÄÚµùµÇ´Â ¹æ¹ýÀº QUERY_STRING¸¦ ¾µ ¶§¿Í ¸¶Âù°¡ÁöÀÌ´Ù. Ç¥ÁØÀÔ·ÂÀ¸·Î µ¥ÀÌÅÍ°¡ Àü´ÞµÉ ¶§¿¡´Â ¼­¹ö°¡ µ¥ÀÌÅÍÀÇ ³¡¿¡ EOF ½Éº¼À» »ðÀÔÇÏÁö ¾ÊÀ» ¼öµµ Àֱ⠶§¹®¿¡ ȯ°æº¯¼ö CONTENT_LENGTH¸¦ Àоîµé¿©¼­ ±× °ª ¸¸Å­ µ¥ÀÌÅ͸¦ Àоîµé¿©¾ß ÇÑ´Ù. ¸í·ÉÇà

ȯ°æº¯¼ö¿Í Ç¥ÁØÀԷ¿¡ ÀÇÇÑ ¹æ¹ý ¿Ü¿¡ <ISINDEX>¸¦ »ç¿ëÇÑ °æ¿ì, ¸í·ÉÇàÀÇ ¸Å°³º¯¼ö·Î ÀÎÀÚ¸¦ ³Ñ°Ü¹ÞÀ» ¼ö ÀÖ´Ù. ¸í·ÉÇàÀÌ »ç¿ëµÈ °ÍÀ» ¾Ë¾Æ³»±â À§Çؼ­´Â Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ Àü´ÞµÈ µ¥ÀÌÅÍ¿¡ ÀÎÄÚµùÀÌ µÇÁö ¾ÊÀº '='¸¦ ãÀ¸¸é µÈ´Ù.

À¥ ¼­¹ö´Â ÀÎÄÚµùÀÌ µÇÁö ¾ÊÀº '='ÀÌ ÀÖÀ» °æ¿ì´Â GETÀ» ÅëÇÑ ÀÔ·ÂÀ¸·Î Çؼ®Çؼ­ ¸í·ÉÇà ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾Ê°í, ±×·¸Áö ¾Ê´Ù¸é <ISINDEX>¿¡ ÀÇÇÑ ÁúÀǶó°í ÆÇ´ÜÇؼ­ ¸í·ÉÇà ¿É¼ÇÀ» »ç¿ëÇÏ°Ô µÈ´Ù.

ÀÌ ¹æ¹ýÀº Ŭ¶óÀ̾ðÆ®°¡ <ISINDEX>¸¦ »ç¿ëÇÑ °æ¿ì¿¡ '='¸¦ ÀûÀýÇÏ°Ô ÀÎÄÚµùÇÏ´Â °æ¿ì¿¡¸¸ Àû¿ëµÉ ¼ö ÀÖ´Ù. ¸¸¾à Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ÀÌ ÀÌ°ÍÀ» À߸øó¸®ÇÑ´Ù¸é Á¤È®ÇÏ°Ô ÆÇ´ÜÇÏÁö ¸øÇÒ ¼öµµ ÀÖ´Ù. °£´ÜÇÑ ¿¹ finger.cgi ¼Ò½º

 1: #!/usr/local/bin/perl
 2:  
 3: print "Content-type: text/html\n\n";
 4: 
 5: print "<HTML><HEAD><TITLE>ÇΰŠ°ÔÀÌÆ®¿þÀÌ</TITLE></HEAD><BODY>";
 6: print "<H1>ÇΰŠ°ÔÀÌÆ®¿þÀÌ</H1>";
 7: 
 8: if(!($#ARGV+1)) {
 9: 	print "<ISINDEX prompt="user\@host¸¦ ÀÔ·ÂÇϼ¼¿ä: "><br>";
10: }else {
11:	print "<PRE>";
12:	print `/usr/bin/finger $ARGV[0]`;
13:	print "</PRE>";
14: }
15:
16: print "</body></html>";
finger.cgiÀÇ ½ÇÇà°á°ú

finger.cgi ¼³¸í

À§ÀÇ ÇÁ·Î±×·¥Àº perlÀ» ÀÌ¿ëÇؼ­ finger °ÔÀÌÆ®¿þÀ̸¦ ±¸ÇöÇÑ °ÍÀÌ´Ù. @ARGV´Â ¸í·ÉÇà ÀÎÀÚ¸¦ °¡Áö°í ÀÖÀ¸¸ç, $#ARGV+1Àº ¸í·ÉÇà ÀÎÀÚÀÇ °³¼ö(c¿¡¼­ argc())¸¦ ³ªÅ¸³½´Ù.

¸í·ÉÇà¿¡ ÀÎÀÚ°¡ ¾ø´Â °æ¿ì, ´Ü¼øÈ÷ <ISINDEX> ű׸¦ Ãâ·ÂÇØ ÁÖ°í ÀÎÀÚ°¡ ÀÖ´Â °æ¿ì Áï, <ISINDEX> ÀÔ·Â Çʵ忡 µ¥ÀÌÅ͸¦ ÀÔ·ÂÇؼ­ CGI ÇÁ·Î±×·¥À» È£ÃâÇÑ °æ¿ì´Â finger ÇÁ·Î±×·¥À» ÀÔ·ÂÀÎÀÚ¿Í ÇÔ²² È£ÃâÇÑ ÈÄ ±× °á°ú¸¦ µ¹·Á ÁØ´Ù. finger ÇÁ·Î±×·¥À» È£ÃâÇÏ´Â ºÎºÐÀº /bin/finger $ARGV[0]À̸ç, ` `(¿ªµû¿ÈÇ¥)´Â ½ÇÇàÇÑ °á°ú¸¦ Ãâ·ÂÇ϶ó´Â ÀǹÌÀÌ´Ù.

finger ÇÁ·Î±×·¥Àº Ç¥ÁØÃâ·ÂÀ¸·Î °á°ú¸¦ Ãâ·ÂÇϱ⠶§¹®¿¡ CGIÀÇ Ãâ·Â ¹æ½Ä°ú µé¾î¸Â±â ¶§¹®¿¡ ±× °á°ú¸¦ Ưº°È÷ º¯È¯ÇØ ÁÙ ÇÊ¿ä°¡ ¾ø´Ù. ¸¸¾à html¹®¼­·Î º¯È¯ÇØ¾ß ÇÑ´Ù¸é ±× °á°ú¸¦ ¹Þ¾ÆµéÀÎ ´ÙÀ½¿¡ ´Ù½Ã º¯È¯ÇÏ´Â °úÁ¤À» °ÅÃÄ¾ß ÇÒ °ÍÀÌ´Ù.

À¥ ¼­¹ö°¡ ³»ºÎÀûÀÎ ÇÑ°è·Î ÀÎÇØ(¿¹¸¦ µé¾î exec()À̳ª /bin/sh ¸í·ÉÇàÀÇ Á¦¾à) Àüü ¹®ÀÚ¿­À» º¸³¾ ¼ö°¡ ¾øÀ» °æ¿ì¿¡´Â ¸í·ÉÇàÀ» ÅëÇؼ­´Â ¾Æ¹«·± Á¤º¸µµ Àü´ÞµÇÁö ¾Ê°í ´ë½Å QUERY_STRING¸¸ÀÌ »ç¿ëµÈ´Ù.

À§ ÇÁ·Î±×·¥Àº CGI ÇÁ·Î±×·¥À̹ǷΠ´ÙÀ½°ú °°ÀÌ permissionÀ» º¯°æÇØÁÖ°í Unix ¸í·ÉÇà¿¡¼­ ½ÇÇà½ÃÄѺ» ÈÄ, À¥»ó¿¡¼­ ½ÇÇà½ÃÄÑ¾ß ÇÑ´Ù. Unix ¸í·ÉÇà¿¡¼­ ½ÇÇà

% chmod 755 finger.cgi
% finger.cgi artech
Web¿¡¼­ ½ÇÇà

http://ix.bit.co.kr/~artech/cgi-bin/finger.cgi


´ÙÀ½±Û: Á¦ 18°­ - CGI ¸í¼¼ - Ãâ·Â (9093)1996-03-18
ÀÌÀü±Û: Á¦ 16°­ - HTTP ¸í¼¼ - Request/Response (10711)1996-03-16

¼¼»ó»ç´Â À̾߱â



RSS ±¸µ¶ (À͸í | ȸ¿ø | °­Á | Æ÷·³)
(C) 1996 ~ 2017 QAOS.com All rights reserved.