最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php打開遠程文件的方法和風險及解決方法

 更新時間:2013年11月12日 10:40:49   作者:  
本文講的是php打開遠程文件的使用方法,還有使用風險和解決方法
PHP有一個配置選項叫allow_url_fopen,該選項默認是有效的。它允許你指向許多類型的資源,并像本地文件一樣處理。例如,通過讀取URL你可以取得某一個頁面的內(nèi)容(HTML),看下面的代碼
復(fù)制代碼 代碼如下:

<?php
$contents = file_get_contents('http://m.fzitv.net/');
?>

當被污染數(shù)據(jù)用于include和require的文件指向時,會產(chǎn)生嚴重漏洞。實際上,我認為這種漏洞是PHP應(yīng)用中最危險的漏洞之一,這是因為它允許攻擊者執(zhí)行任意代碼。盡管嚴重性在級別上要差一點,但在一個標準文件系統(tǒng)函數(shù)中使用了被污染數(shù)據(jù)的話,會有類似的漏洞產(chǎn)生:
復(fù)制代碼 代碼如下:

<?php
$contents = file_get_contents($_GET['filename']);
?>

該例使用戶能操縱file_get_contents( )的行為,以使它獲取遠程資源的內(nèi)容??紤]一下類似下面的請求:
http://example.org/file.php?file ... mple.org%2Fxss.html
這就導(dǎo)致了$content的值被污染的情形,由于這個值是通過間接方式得到的,因此很可能會忽視這個事實。這也是深度防范原則會視文件系統(tǒng)為遠程的數(shù)據(jù)源,同時會視$content的值為輸入,這樣你的過濾機制會潛在的起到扭轉(zhuǎn)乾坤的作用。
由于$content值是被污染的,它可能導(dǎo)致多種安全漏洞,包括跨站腳本漏洞和SQL注入漏洞。例如,下面是跨站腳本漏洞的示例:
復(fù)制代碼 代碼如下:

<?php
$contents = file_get_contents($_GET['filename']);
echo $contents;
?>

解決方案是永遠不要用被污染的數(shù)據(jù)去指向一個文件名。要堅持過濾輸入,同時確信在數(shù)據(jù)指向一個文件名之前被過濾即可:
復(fù)制代碼 代碼如下:

<?php
$clean = array();
/* Filter Input ($_GET['filename']) */
$contents = file_get_contents($clean['filename']);
?>

盡管無法保證$content中的數(shù)據(jù)完全沒有問題,但這還是給出了一個合理的保證,即你讀取的文件正是你想要讀取的文件,而不是由攻擊者指定的。為加強這個流程的安全性,你同樣需要把$content看成是輸入,并在使用前對它進行過濾。
復(fù)制代碼 代碼如下:

<?php
$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'];
?>

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

相關(guān)文章

最新評論

大庆市| 双柏县| 冷水江市| 乌兰浩特市| 崇州市| 德令哈市| 安图县| 新干县| 旺苍县| 抚远县| 南和县| 安塞县| 开封县| 茌平县| 铜鼓县| 务川| 忻城县| 贵州省| 都匀市| 东明县| 宣化县| 腾冲县| 五常市| 灵台县| 隆昌县| 芮城县| 盐亭县| 新巴尔虎左旗| 广宗县| 伊宁县| 甘南县| 石泉县| 和顺县| 泽库县| 文水县| 遂溪县| 马公市| 温州市| 平凉市| 平遥县| 宿松县|