求三行代碼的安全性問題
$js = explode(',',$_GET['js']);
foreach ($js as $file) {
echo file_get_contents('./public/js/'.$file.'.js')."n";
}
復制代碼攻擊者有沒方法讀到服務器上的PHP文件
[ ]
我來回答
D8888D回貼內容-------------------------------------------------------
$js = $_GET['js'];
$js = explode(',',$js);
$error = null;
!is_array($js) && $error +=1;
$str = null;
foreach ($js as $file) {
eregi('[[:punct:]]',$file) && $error +=1;
$files = "./public/js/{$file}.js";
if (is_file($files))
$str .= file_get_contents($files)."n";
}
if($error!==null)
exit('錯誤');
echo $str;
?>
復制代碼[ ]
D8888D回貼內容-------------------------------------------------------
謝謝於安
我不管錯誤了怎麼處理,想了解的是黑客有沒可能繞過後綴.js的限制訪問php文件
反正除了黑客沒其他人用的
錯誤加個error_reporting(0);就是了
剛看了這篇文章
[url=http://www.111cn.cn/html/18/t-3418.html]鏈接標記http://www.111cn.cn/html/18/t-3418.html[/url]
D8888D回貼內容-------------------------------------------------------
習慣總得養成好.. 流程控制好..
以便維護.
D8888D回貼內容-------------------------------------------------------
恩恩額、
你覺得繞過限制容易嗎
D8888D回貼內容-------------------------------------------------------
看你的代碼.,
讀文件, 還循環來讀.. 感覺不出來是什麼程序需要這種結構..
D8888D回貼內容-------------------------------------------------------
不錯
D8888D回貼內容-------------------------------------------------------
我代碼是js加載用的,把所有js放到一個文件裡面,減少request數
比如
需要加載jquery,fckeditor不需要thnikbox的頁面就js=jquery,fckeditor
代碼很簡單,效率應該和直接加載一個文件一樣
D8888D回貼內容-------------------------------------------------------
一個頁面有再多js都只 script一次
D8888D回貼內容-------------------------------------------------------
不要包含$_GET上來的文件
PHP是可以包含遠程文件的