2016-10-22 24 views
0

例如,如果我這樣做PHP的複雜捲曲語法是否危險?

$a = "{${phpinfo()}}"; 

phpinfo()函數將這個字符串聲明的上下文中執行。當我做$ a = $ _GET ['a']時,這似乎不會發生,並且將var設置爲等於{$ {phpinfo()}}。爲什麼不這樣做,這是否意味着曲線語法在這種方式下並不危險?

+0

我看不出有什麼這與「捲毛語法」做。你的代碼執行一個函數,因爲你告訴它。當然,這可能會導致問題,因爲你執行的每一個命令。你當然不應該提供客戶端提供的數據,如果這就是你的意思。但是對於你執行的每一個命令來說都是如此...... – arkascha

回答

1

這是不危險的,因爲變量插值僅在編譯期間執行。這些序列必須物理地位於雙引號字符串/ heredoc文字內的代碼中。您必須動態生成文件或使用eval()才能擔心這一點。

0

就像將雙引號改爲單引號一樣。

如果你有

$a = 10; 
$b = "$a"; 
$c = '$a'; 
echo "b = $b\n"; 
echo "c = $c\n"; 

然後$ B將是相同爲$ a。 而$ C將美元從字面上

看到What does ${ } mean in PHP syntax?