簡體   English   中英

我應該對Perl Web腳本文件使用.pl還是.cgi?

[英]Should I use .pl or .cgi for Perl web script files?

我使用以下代碼創建了兩個文件“ hello.pl”和“ hello.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開發人員中哪個更有意義?

順便說一句,這是我的VPS服務器創建的“ cgi-bin”目錄,我是否需要聯系我的VPS支持人員才能將其刪除或僅保留此URL樣式? 也許http://www.mydomain.com/ perDev /hello.cgi更好?

使用哪個擴展名並不重要。 如果您願意,可以將服務器配置為將.potato視為CGI文件。

我個人比較喜歡使用.cgi甚至根本不使用擴展名。 這樣做的主要原因是,您向可能希望攻擊您的腳本的人提供的信息較少。 這是微不足道的事情- 不要以此作為安全措施。 這是雞湯的安全預防措施(不會造成傷害)。

不使用.pl的好處很小,以至於您可以決定使用.pl這個簡單的事實,因為它較短,而且就我而言,這仍然是一個足夠好的理由。

做任何讓你高興的事。

如果可能的話,請盡量不要使用擴展名,甚至可以公開真實的文件名。 您可以使用apache mod_rewrite規則,也可以使用框架的調度系統( DancerCGI :: ApplicationCatalyst等)來執行此操作。

有些人這樣做是因為它使事情有些混亂,並且可能提供一些額外的安全性(但如果有的話,則不多)。 但是我這樣做是因為它不會將您束縛於特定的實現。 最初,一些簡單的腳本可能會變成一個功能強大的應用程序,如果您使他們的書簽無效,人們就會感到惱火。 因此,通過選擇抽象的東西,您將有更多的自由去做將來想要做的事情。

我的通常被命名為.fcgi(我使用FastCGI而不是普通的CGI),但是由於.htaccess中有一些URL重寫,所以用戶從未看到程序的名稱。 畢竟,對於用戶來說,能夠只訪問http://mysite.com/而不是http://mysite.com/mycode.fcgi更好。

在功能上,無論擴展名是相同的。 正如daotoad所說,可以將服務器配置為根據您選擇的任何文件擴展名或文件在文件系統中的位置來識別某物是CGI可執行文件(使用/ cgi-bin /目錄的站點通常會處理該目錄中的所有內容)作為CGI程序,無論其名稱或擴展名如何),甚至是單獨命名的文件,它們之間都沒有明顯的模式或聯系。

使用

因為URL應該有意義並且與技術無關

諸如DancerMojolicious之類的現代Perl Web框架可以幫助您實現這一目標。

在所有其他條件相同的情況下,我將其命名為.cgi以提醒編碼人員,它不僅是另一個Perl腳本,而且具有CGI特有的健壯性要求。

不使用任何擴展名或諸如.cgi之類的通用名稱。

daotoad關於.pl是次要的安全漏洞,是正確的,但更重要的是,它會將您的URL與您當前的實現語言掛鈎。 URL應該是信息的永久位置。 如果將來您決定以后再用另一種語言重寫您的應用程序,您將被遺留的.pl擴展名所困擾。

命令行程序也是如此。 只需編寫command而不是command.pl並讓#! 線做好工作。 畢竟,我們不運行ls.c

mpeters也是正確的,因為您應該避免將URL鏈接到實際文件,這同樣不是為了安全起見,而是將URL設置為永久接口。 例如,您希望http://example.com/login而不是http://example.com/cgi-bin/login

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM