file_get_contents
不會執行PHP代碼,除非你試圖編輯遠程服務器上的文件,提供的URL。在這種情況下,您從遠程服務器獲得的將是執行的PHP代碼,而不是源代碼。
無論是編輯本地文件,或者你需要提供一個「後門」,將送你回一個給定的PHP文件的代碼。要小心,因爲這是一個安全漏洞 - 任何人都可能閱讀你的PHP的源代碼。
避免這種情況的方法是隻接受,如果他們是在給定的目錄中提供的文件。 另一種可能是檢查文件內容:
<?php
// This file will read any local PHP file (or any file of any kind,
// returning it as text), provided they contain a written agreement
// to be read.
if (!isset($_REQUEST['file']))
die("ERROR: no file supplied");
$path = $_REQUEST['file'];
if (!is_readable($path))
die("ERROR: file is not readable");
$content = file_get_contents($path);
if (false === strpos($content, "IT IS OK TO READ THIS FILE AS SOURCE"))
die("ERROR: this file is not authorized");
if (false !== strpos($content, "IT IS NOT OK TO READ THIS FILE AS SOURCE"))
die("ERROR: this file is not authorized");
Header("Content-Type: text/plain");
Header("Content-Length: " . strlen($content));
die($content);
?>
爲了能夠讀取該文件,該文件本身必須包含一個聲明,如
// IT IS OK TO READ THIS FILE AS SOURCE
而且還必須不包含的聲明相反的意思。
'file_get_contents'不會執行的代碼,你能告訴我們你的做法? –
你可以顯示你的代碼來生成'$ content' –
你能告訴我們代碼輸出的代碼嗎? –