2011-04-24 91 views
1

我試過搜索,但沒有太多的運氣 - 道歉,如果這是回答某處。傳遞GET變量到php EXEC

我正在玩一些零碎的東西,我試圖將一個URL變量傳遞給EXEC。 這裏就是我試圖.. SC.EXE是一個程序,我需要傳遞一個URL-的$ GET_ID變量來自於URL

$GET_ID =$_GET= ['myid']; 
    exec('sc.exe --url=http://localhost/DS1/test.php?ID='.$GET_ID.'&TEST=1'); 
    echo $GET_ID; 

當我嘗試此代碼OUT-的GET變量沒有按似乎沒有通過,程序得到 http://localhost/DS1/test.php?ID=&TEST=1'

我已經做了一些搜索..這似乎是各種限制..所以什麼是解決方案/解決方法?

感謝

+0

愚蠢的問題......但你有沒有在實際值的查詢字符串中包含'myid'?因爲它應該像你一樣工作。 – judda 2011-04-24 13:16:05

回答

5

你在你的代碼的額外=。這應該工作:

$GET_ID = $_GET['myid']; 

但是,直接傳遞用戶數據到命令行是高度危險!它允許攻擊者在命令行上執行任意命令。

必須使用escapeshellarg()

$GET_ID = escapeshellarg($_GET['myid']); 
+0

哈! - 我不敢相信我錯過了額外=標誌!... – chip 2011-04-24 13:40:46

+1

https://github.com/search?q=exec%28%24_GET&ref=cmdform&type=Code – Sebastian 2014-04-29 11:12:21

1

只需卸下=後$ _GET。