2010-05-13 4 views
1

HI. 아래 코드로 hello.pl과 hello.cgi의 두 파일을 생성했습니다.Perl 웹 스크립트 파일에 .pl 또는 .cgi를 사용해야합니까?

#!/usr/bin/perl 
print "Content-type:text/html\n\n"; 
print "hello world"; 

나는 http://www.mydomain.com/cgi-bin/hello.plhttp://www.mydomain.com/cgi-bin/hello.cgi모두를 통해 페이지를 볼 수 있습니다. Perl web dev에서 어느 것이 더 옳은가요?

BTW, 내 VPS 서버에서 만든 'cgi-bin'의 디렉토리입니다. 제거하려면 VPS 지원팀에 연락해야 하나, 아니면이 URL 스타일처럼 그대로 두어야합니까? 어쩌면 http://www.mydomain.com/perDev /hello.cgi이 더 낫습니까?

+1

아무 것도 선택하지 말고 가장 좋아하는 것을 선택하십시오. – Space

답변

9

어떤 확장 프로그램을 사용하든 상관 없습니다. 기꺼이 받아들이면 .potato을 CGI 파일로 처리하도록 서버를 구성 할 수 있습니다.

내 개인적인 취향은 .cgi이거나 심지어 작동하지 않으면 전혀 확장되지 않을 수도 있습니다. 그 주된 이유는 스크립트를 공격하려는 사람에게 정보를 조금 줄이는 것입니다. 사소한 일입니다. 은 보안 조치로이에 의존하지 마십시오. 이것은 치킨 스프 예방 조치입니다 (아프지 않아야 함).

.pl을 사용하지 않는 이점은 너무 작아서 .pl을 사용하는 것이 더 간단하다는 간단한 사실을 알게 될 것이며, 여전히 우려할만한 충분한 이유가 될 수 있습니다.

당신을 만족 시키십시오.

+0

안녕 Daotoad, 고마워. –

+0

'.pl' 파일을 피할 수있는 또 다른 이유는 Apache에서 언어 기반 컨텐츠 자동 협상을 위해 폴리쉬 언어 파일에 사용되는 표준 확장입니다. 말하자면'example.html'과'example.html.pl' 파일을 가지고 있다면 아파치는'example.html.pl'을 언어 브라우저로,'example.html'을 다른 브라우저로 보낼 수 있습니다. –

+0

이것은 잘못되었습니다. 아파치의 기본 설정은 2001 년 이후로 당신이 기술 한 충돌을 피하기 위해 폴란드어에 확장자'.po'를 부여하기 때문이다. – daxim

2

다른 모든 것들이 동일하다는 것을, 나는 단지 이라고 부르며 단지 다른 펄 스크립트가 아니며 CGI에 특별한 견고성 요구 사항을 가지고 있음을 코더에 상기시켜줍니다.

3

광산은 보통 .fcgi (보통 CGI가 아닌 FastCGI를 사용합니다)라는 이름이 붙지 만, 사용자는 .htaccess에서 약간의 URL 재 작성 덕분에 프로그램의 이름을 결코 볼 수 없습니다. 사용자가 http://mysite.com/mycode.fcgi 대신 http://mysite.com/으로 갈 수있게되면 훨씬 좋을 것입니다.

기능적으로 확장 기능에 관계없이 기능상 동일합니다. daotoad가 말했듯이, 서버는 여러분이 선택한 파일 확장자 나 파일 시스템의 위치에 기반하여 CGI 실행 파일을 인식하도록 서버를 구성 할 수 있습니다 (/ cgi-bin/디렉토리를 사용하는 사이트는 대개 해당 디렉토리의 모든 것을 처리합니다 이름이나 확장자에 상관없이 CGI 프로그램으로), 심지어는 개별적인 이름의 파일을 포함 할 수 있습니다.

+0

FastCIG 정보를 보내 주셔서 감사합니다. –

8

가능한 경우 확장명을 사용하지 말고 가능한 경우 실제 파일 이름을 표시하십시오. 이 작업은 apache mod_rewrite 규칙 또는 프레임 워크 (Dancer, CGI::Application, Catalyst 등)가있는 디스 패칭 시스템에서 수행 할 수 있습니다.

약간의 것들이 난독 화되어 약간의 보안이 강화 될 수도 있지만 (있는 경우는 많지는 않음) 일부 사용자는 그렇게합니다. 하지만 특정 구현으로 연결하지 않기 때문에이 작업을 수행합니다. 몇 가지 간단한 스크립트로 시작하는 것은 완전한 어플 리케이션으로 바뀔 수 있으며 책갈피를 무효화하면 사람들은 짜증을냅니다. 따라서 추상적 인 것을 선택하면 미래에 원하는 것을 더 자유롭게 할 수 있습니다.

+0

나는 또한 Catalyst와 같은 Perl 웹 프레임 워크를 배우기를 원하지만 Php Web Dev의 필자의 감각에 기반하여 일반적인 기본 .cgi 스크립트 지식 및 기술을 배우고 프레임 워크의 dev Perl 웹 응용 프로그램으로 전송하려고합니다. 고맙습니다. –

+1

@NanoHE 오래된 CGI.pm을 사용하지 마십시오. 대신 [Dancer] (http://www.perldancer.org/) 또는 [Mojolicious] (http://mojolicious.org/)와 같은 현대적이고 깨끗한 웹 엔진을 사용하십시오. – dolmen

2

확장자가 없거나 .cgi와 같이 일반적인 것을 사용하십시오.

daotoad는 정확합니다. 작은 보안 누출이 있지만 더 중요한 것은 URL이 현재 구현 언어로 지정되어 있습니다. URL은 정보를위한 영구적 인 위치 여야합니다. 나중에 다른 언어로 응용 프로그램을 다시 작성하기로 결정하면 기존 .pl 확장자로 인해 어려움을 겪을 수 있습니다.

동일한 내용이 명령 줄 프로그램에 적용됩니다. 이 아닌 command을 작성하고 #! 행을 처리하게하십시오. 결국 ls.c을 실행하지 않습니다.

mpeters 또한 URL을 실제 파일에 연결하지 말아야한다는 점에서 정확합니다. 다시 말하지만 보안상의 이유로 URL을 영구적 인 인터페이스로 만들지 마십시오. 예를 들어, http://example.com/loginhttp://example.com/cgi-bin/login이 아닙니다.

+0

정말 고마워요. –

관련 문제