php函數偽靜態、MVC單一入口與檔案上傳安全性漏洞

來源:互聯網
上載者:User

簡介:這是php函數偽靜態、MVC單一入口與檔案上傳安全性漏洞的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。

class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=334787' scrolling='no'>

php中有一個讓人不解的特性,那就是,如果檔案名稱中有".php",則會自動調用PHP引擎,當成PHP指令碼處理。
php的函數偽靜態也是這樣做出來的。
以下是函數偽靜態所用的函數:

function MakeUrl($arr){          foreach($arr as $key=>$value){                  $url[]=$key."_".$value;          }          $tmpurl=implode("_",$url);          return $tmpurl.".htm"; } function ParseUrl(){     if($_SERVER['PATH_INFO']!=""){          $pathinfo=substr($_SERVER['PATH_INFO'],1);          $pathinfo=str_replace(".htm","",$pathinfo);          $path=explode("_",$pathinfo);          $count=count($path);          for($i=0;$i<$count;$i+=2){                  $_GET[$path[$i]]=$path[$i+1];          }     } } //使用執行個體,連結頁面 $path="http://www.tiaotiaola.com/blog.php/"; $path.=MakeUrl(array('BlogID'=>2,'page'=>1)); 以上兩行代碼產生頁面中的URL。//瀏覽頁面,調用函數ParseUrl();直接可以使用變數$_GET 

當然,很多MVC架構中,均支援這樣的功能,但在MVC架構中,並不一定是用上面兩個函數實現的了。
其實,它不僅是偽靜態所需。同時也是MVC所必須要的功能。這是因為,MVC中的所謂的單一入口,也是憑此功能實現的。
我們可以見到很多網站,連結象 http://www.tiaotiaola.com/s/2/3/4/5.html
實際是經過.htaccess,或者是UrlRewrite處理過的。未處理之前是:http://www.tiaotiaola.com/s.php/2/3/4/5.html
s.php一定是MVC的入口檔案。
這就是說,some.php.png,s.php/2/3/4/5.html這樣的檔案,均會當成PHP檔案被執行。
這也就引發了另一個問題:
如果我上傳一個檔案,名為:some.php.png,那我肯定能夠上傳成功。
因而,我就可以在上傳成功後,再次請求這一個URL。於是,駭客攻擊就能輕鬆實現。

當然,要阻止這一問題並不難,第一,我們可以在上傳目錄增加一個.htaccess,內容如下,
<Directory "/uploads/">
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
</Directory>
很顯然,它的目的就是禁止檔案以PHP方式執行。
另外,最徹底的解決辦法,則是:對所有的上傳檔案均進行改名。即不儲存原始檔案名。如果要儲存,則必須去掉檔案名稱中的"."以及其它可能有攻擊性的文法。
我們推薦的做法是不儲存原始檔案名,即對原始檔案名用md5或sha進行hash,如果要區分上傳時間,可以加上時間戳記,即產生的是純a-z0-9文字的檔案名稱。最後加上原始副檔名即可。

愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具

http://biancheng.dnbcw.info/php/334787.html pageNo:10

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.