php開啟遠程檔案的方法和風險及解決方案_PHP教程

來源:互聯網
上載者:User
PHP有一個配置選項叫allow_url_fopen,該選項預設是有效。它允許你指向許多類型的資源,並像本地檔案一樣處理。例如,通過讀取URL你可以取得某一個頁面的內容(HTML),看下面的代碼
複製代碼 代碼如下:
$contents = file_get_contents('http://www.jb51.net/');
?>

當被汙染資料用於include和require的檔案指向時,會產生嚴重漏洞。實際上,我認為這種漏洞是PHP應用中最危險的漏洞之一,這是因為它允許攻擊者執行任意代碼。儘管嚴重性在層級上要差一點,但在一個標準檔案系統函數中使用了被汙染資料的話,會有類似的漏洞產生:
複製代碼 代碼如下:
$contents = file_get_contents($_GET['filename']);
?>

該例使使用者能操縱file_get_contents( )的行為,以使它擷取遠端資源的內容。考慮一下類似下面的請求:
http://example.org/file.php?file ... mple.org%2Fxss.html
這就導致了$content的值被汙染的情形,由於這個值是通過間接方式得到的,因此很可能會忽視這個事實。這也是深度防範原則會視檔案系統為遠端資料來源,同時會視$content的值為輸入,這樣你的過濾機制會潛在的起到扭轉乾坤的作用。
由於$content值是被汙染的,它可能導致多種安全性漏洞,包括跨站指令碼漏洞和SQL注入漏洞。例如,下面是跨站指令碼漏洞的樣本:
複製代碼 代碼如下:
$contents = file_get_contents($_GET['filename']);
echo $contents;
?>

解決方案是永遠不要用被汙染的資料去指向一個檔案名稱。要堅持過濾輸入,同時確信在資料指向一個檔案名稱之前被過濾即可:
複製代碼 代碼如下:
$clean = array();
/* Filter Input ($_GET['filename']) */
$contents = file_get_contents($clean['filename']);
?>

儘管無法保證$content中的資料完全沒有問題,但這還是給出了一個合理的保證,即你讀取的檔案正是你想要讀取的檔案,而不是由攻擊者指定的。為加強這個流程的安全性,你同樣需要把$content看成是輸入,並在使用前對它進行過濾。
複製代碼 代碼如下:
$clean = array();
$html = array();
/* Filter Input ($_GET['filename']) */
$contents = file_get_contents($clean['filename']);
/* Filter Input ($contents) */
$html['contents'] = htmlentities($clean['contents'], ENT_QUOTES, 'UTF-8');
echo $html['contents'];
?>

上面的流程提供了防範多種攻擊的強有力的方法,同時在實際編程中推薦使用。

http://www.bkjia.com/PHPjc/825132.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825132.htmlTechArticlePHP有一個配置選項叫allow_url_fopen,該選項預設是有效。它允許你指向許多類型的資源,並像本地檔案一樣處理。例如,通過讀取URL你可以...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.