自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP保護(hù)文件系統(tǒng)的具體代碼分享

開發(fā) 后端
PHP保護(hù)文件系統(tǒng)是非常湊效的。我們?cè)谖恼轮惺褂昧薖HP站點(diǎn)示例,來(lái)幫助大家解決文件系統(tǒng)的保護(hù)問題,增加PHP的經(jīng)驗(yàn)積累。

文件系統(tǒng)對(duì)于任何一個(gè)站點(diǎn)來(lái)說(shuō)都是相當(dāng)重要的,程序員們都在不遺余力的保護(hù)著自己的系統(tǒng)不受侵犯。今天我們就為大家講解了PHP保護(hù)文件系統(tǒng)的具體代碼示例。曾經(jīng)有一個(gè) Web 站點(diǎn)泄露了保存在 Web 服務(wù)器的文件中的客戶數(shù)據(jù)。該 Web 站點(diǎn)的一個(gè)訪問者使用 URL 查看了包含數(shù)據(jù)的文件。雖然文件被放錯(cuò)了位置,但是這個(gè)例子強(qiáng)調(diào)了針對(duì)攻擊者保護(hù)文件系統(tǒng)的重要性。

#t#如果 PHP 應(yīng)用程序?qū)ξ募M(jìn)行了任意處理并且含有用戶可以輸入的變量數(shù)據(jù),請(qǐng)仔細(xì)檢查用戶輸入以確保用戶無(wú)法對(duì)文件系統(tǒng)執(zhí)行任何不恰當(dāng)?shù)牟僮?。清?1 顯示了下載具有指定名的圖像的 PHP 站點(diǎn)示例。

  1. <?php   
  2. if ($_POST['submit'] == 'Download') {   
  3.     $file = $_POST['fileName'];   
  4.     header("Content-Type: application/x-octet-stream");   
  5.     header("Content-Transfer-Encoding: binary");   
  6.     header("Content-Disposition: attachment; filename=\"" . $file . "\";" );   
  7.     $fh = fopen($file, 'r');   
  8.     while (! feof($fh))   
  9.     {   
  10.         echo(fread($fh, 1024));   
  11.     }   
  12.     fclose($fh);   
  13. } else {   
  14.     echo("<html><head><");   
  15.         echo("title>Guard your filesystem</title></head>");   
  16.     echo("<body><form id=\"myFrom\" action=\"" . $_SERVER['PHP_SELF'] .   
  17.         "\" method=\"post\">");   
  18.     echo("<div><input type=\"text\" name=\"fileName\" value=\"");   
  19.     echo(isset($_REQUEST['fileName']) ? $_REQUEST['fileName'] : '');   
  20.     echo("\" />");   
  21.     echo("<input type=\"submit\" value=\"Download\" name=\"submit\" /></div>");   
  22.     echo("</form></body></html>");   
  23. }  

正如您所見,清單 1 中比較危險(xiǎn)的腳本將處理 Web 服務(wù)器擁有讀取權(quán)限的所有文件,包括會(huì)話目錄中的文件(請(qǐng)參閱 “保護(hù)會(huì)話數(shù)據(jù)”),甚至還包括一些系統(tǒng)文件(例如 /etc/passwd)。為了進(jìn)行PHP保護(hù)文件系統(tǒng)演示,這個(gè)示例使用了一個(gè)可供用戶鍵入文件名的文本框,但是可以在查詢字符串中輕松地提供文件名。

同時(shí)配置用戶輸入和文件系統(tǒng)訪問權(quán)十分危險(xiǎn),因此最好把應(yīng)用程序設(shè)計(jì)為使用數(shù)據(jù)庫(kù)和隱藏生成的文件名來(lái)避免同時(shí)配置。但是,這樣做并不總是有效。清單 2 提供了驗(yàn)證文件名的示例例程。它將使用正則表達(dá)式以確保文件名中僅使用有效字符,并且特別檢查圓點(diǎn)字符:..。

  1. function isValidFileName($file) {   
  2.     /* don't allow .. and allow any "word" character \ / */   
  3.     return preg_match('/^(((?:\.)(?!\.))|\w)+$/', $file);   

以上就是本文為大家分享的PHP保護(hù)文件系統(tǒng)的具體代碼編寫。

責(zé)任編輯:曹凱 來(lái)源: CSDN
相關(guān)推薦

2009-11-24 14:52:45

PHP動(dòng)態(tài)多文件上傳

2009-11-24 13:33:49

2009-11-25 10:31:35

PHP數(shù)組實(shí)現(xiàn)單鏈表

2018-05-02 08:35:33

LinuxTripwire文件系統(tǒng)

2010-09-25 10:47:40

Linux文件系統(tǒng)Tripwire

2009-11-25 17:48:18

PHP文件系統(tǒng)相關(guān)函數(shù)

2009-11-25 17:28:26

PHP對(duì)話

2009-12-01 14:33:06

PHP生成html文件

2009-12-01 10:50:45

PHP函數(shù)requir

2011-08-01 16:42:24

ibmdwNFS文件系統(tǒng)

2019-09-18 10:22:13

操作系統(tǒng)LinuxCentOSMac

2020-07-22 14:53:06

Linux系統(tǒng)虛擬文件

2013-05-27 14:46:06

文件系統(tǒng)分布式文件系統(tǒng)

2009-11-02 09:45:23

VB.NET文件系統(tǒng)對(duì)

2009-11-24 18:37:55

PHP數(shù)組轉(zhuǎn)換

2010-04-30 15:51:48

Unix系統(tǒng)

2009-12-01 14:26:19

PHP函數(shù)ob_sta

2011-01-13 14:10:30

Linux文件系統(tǒng)

2012-09-19 13:48:33

pNFS文件系統(tǒng)

2012-02-15 13:30:48

Linux系統(tǒng)安全企業(yè)安全
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)