明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

CGI教學:CGI安全問題(8)

[摘要]4 使用他人CGI腳本時的注意事項 關于CGI,可以從很多地方獲得信息——從Internet上,從學校圖書館中,從像本書這樣的書中,UseNet組中以及朋友和同事中。從這些地方不僅可以獲得信息,還可以得到實際的程序和庫。有些程序和庫如果已經有人做過了為什么自己還要從頭再做一遍呢?但就像不能盲目聽從...
4 使用他人CGI腳本時的注意事項

關于CGI,可以從很多地方獲得信息——從Internet上,從學校圖書館中,從像本書這樣的書中,UseNet組中以及朋友和同事中。從這些地方不僅可以獲得信息,還可以得到實際的程序和庫。有些程序和庫如果已經有人做過了為什么自己還要從頭再做一遍呢?但就像不能盲目聽從別人的意見一樣,關于如何理財,如何駕車或者生活中的別的方面,同樣,也不能在自己的服務器上盲目地運行另從的代碼。從Net上得到的腳本也可能真正是很好的腳本。但也許并不是;ㄐ⿻r間考察一下腳本的來源以及獲取它的站點的可靠性是值得的。

4.1 追根求源

某些Web擁有者。如果不能看到并研究源代碼的話,他們甚至都不會運行一個公共的、免費的或商業(yè)性的腳本。這可能有點偏激。如果某個聲譽很好的公司銷售一個文檔詳細且廣為使用的腳本,該腳本應該比自己寫的腳本更安全一些。原因有二。首先,專業(yè)人才知道并能避免一些常見的安全漏洞;其次,公司是為了嫌錢而做生意,如果他們以次充好或銷售那些惡意的產品就不能再做生意賺錢了。

從另一方面來看,如果UseNet組中看到一個編譯好的可執(zhí)行文件出自一個從沒聽說過的人,沒有什么文檔可以看,也沒有該程序的用戶可以交流交流,那么在將它放入自己的服務器之前一定要仔細考慮。也有可能這是來自一個像自己一樣的另一個CGI編程者的完全合法的貢獻,目的是想讓全世界共享他的編程成果。但它也可能來自某個惡意的,具有變態(tài)幽默感的,只想看到自己能使多少人清盤的人。

在評價公共的免費軟件或商業(yè)性軟件時,應考慮下面這些方面:

該腳本來自一個聲譽好的站點嗎?該站點存在很長一段時間了嗎?它維護得好嗎?Web擁有者在發(fā)布文件前進行檢查嗎?

有沒有足夠的文檔說明該程序如何工作以及用戶如何使用等信息?

有多少人已經下載了該腳本?該站點愿意提供顧客名單嗎?(僅在有疑問時才去詢問;Web擁有者不會整天去回答這類問題。)

有人在UseNet上討論該腳本嗎?如果有,他們說好還是不好?如果沒人提到該腳本可以進一步請求別人的見解。一般總會有人響應的。

提示

在評價腳本時檢查下面這些useNet組: comp.security.announce,comp.securiy.unix,以及comp.infosystem.www.authority.cgi。另外還可以訪問位于ftp.cert.org的Computer

Emergency Response Team,以了解安全問題的歷史及有關工作以及安全保護的軟件。

5)該腳本的作者有沒有一些別的好名聲的腳本?

6)源代碼能得到嗎?免費的或有價的都行。

7)該程序是不是過份宣傳它的能力?如果是,這可能是一個編程新手。

8)該站點自己運了該腳本嗎?如果沒有,為什么?能找到別的站點運行該腳本嗎?過分偏激以及時間限制

盡管游覽取自Web的所有代碼是個好主意,但要花費很多時間,特別是當代碼比較復雜時更是如此。

例如,NCSA HTTPd就太大了,一般用戶不可能一行行去讀,但是從它的主站點http://www.ncsa.uiuc.edu下載它卻能保證極好的完整性,滿足任何用戶的需要。實際上,任何從NCSA下載的東西都是有保障的。

實際上,Web上的許多著名的站點已經為用戶做了大部分的幾乎偏激的代碼檢查工作。從它閃中下載代碼是可能利用的另一層另一層保護。這些站點包括:

ftp://ftp.ncsa.uiuc.edu/Web/httpd/Unix/ncsa_httpd/cgi(the NCSA Archive)
http://www.novia.net/~geewhiz(Virtual Webwerx Division Zero-CGI Land)
http://www.lpage.com/cgi(the World-Famous Guestbook Server)
http://sweetbay.will.uiuc.edu/cgi++(cgi++)
http://www.aee.com/wdw(the Web Developers Warehouse)

4.2 注意禮貌

最后,如果確實希望從Web上下載一些CGI代碼,或者完整地使用它,或者用作自己編寫的更大程序的一部分,還應了解一些事情。

代碼是兔費的并不意味著可以自由地用它作自己想做的任何事情。通常程序和庫是禁止拷貝的,如果原始作者沒有放棄這個權力,他即能限制如何使用該程序。例如,作者可能禁止拆散該腳本,及禁止用作別的腳本的一部分。

一跟來說,在使用別人的代碼之前(即使已經確定它是安全的),最好與作者進行聯(lián)系取得許可。至少這樣做比較有禮貌。而大部分情況下,作者會很高興他的代碼能被別人利用。當然,如果在自己程序某個片段處注明原始作者將是很禮貌的。