CGI和SSI的安全性-FreeBSD
來(lái)源:程序員人生 發(fā)布時(shí)間:2014-05-18 19:37:24 閱讀次數(shù):3641次
允許根據(jù)用戶的請(qǐng)求而在服務(wù)器上運(yùn)行程序,本身就是一種安全漏洞,因此只有在必要時(shí),才允許用戶使用這些功能。
對(duì)于SSI,安全問(wèn)題比較簡(jiǎn)單,可以將其設(shè)置為只分析普通標(biāo)志,不執(zhí)行外部程序,這必須在配置文件中使用 Options IncludesNOEXEC選項(xiàng),而非Options Includes選項(xiàng)。就能滿足對(duì)安全性的一般要求。
CGI程序的情況更為復(fù)雜。由于CGI可以用兩種方式設(shè)置,一種為由ScriptAlias設(shè)置CGI程序的路徑,另一種為通過(guò)設(shè)置CGI的后綴而設(shè)置的。通常只有在信任用戶有能力創(chuàng)建沒(méi)有(或很少)漏洞的CGI程序時(shí),才使用后綴確認(rèn)CGI程序。否則將會(huì)產(chǎn)生一些很糟糕的CGI程序,使得系統(tǒng)很容易被攻擊。因此將CGI程序限制在一些固定目錄下的做法更為常見(jiàn),這至少讓一個(gè)CGI程序經(jīng)過(guò)服務(wù)器管理員的一些檢查,避免明顯的漏洞。
CGI程序的另一個(gè)問(wèn)題是,如果CGI程序要保存瀏覽器客戶發(fā)布的數(shù)據(jù),那么它就要訪問(wèn)系統(tǒng)的文件系統(tǒng)。通常 Apache服務(wù)器使用User和Group配置服務(wù)器運(yùn)行的用戶和組屬性,Apache服務(wù)器啟動(dòng)的CGI程序缺省也使用這個(gè)用戶和組屬性運(yùn)行,也就擁有了這個(gè)用戶和組的權(quán)限,可以存取文件系統(tǒng)中的數(shù)據(jù),這就對(duì)系統(tǒng)安全造成另一個(gè)影響。然而又必須讓CGI程序存取數(shù)據(jù)文件,因此就要適當(dāng)調(diào)整User和 Group的設(shè)置,使得它能夠存取合適的數(shù)據(jù)文件。
即使如此,由于所有的CGI程序都以同樣的用戶執(zhí)行,那么不同用戶的CGI就能相互操作別的用戶的數(shù)據(jù)文件,從而造成安全問(wèn)題。為了使得不同的用戶以不同的用戶身份執(zhí)行CGI,就需要使用程序的SetUID功能。因?yàn)镾etUID 會(huì)帶來(lái)極大的系統(tǒng)漏洞問(wèn)題。因此如非必要,不要使用SetUID程序,尤其是root身份的SetUID程序。設(shè)置用戶身份的問(wèn)題可以使用Apache的 suEXEC能力來(lái)幫助完成,它首先將身份改變?yōu)楹线m的用戶,再執(zhí)行相應(yīng)的CGI程序。
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)