例如,如果我這樣做PHP的複雜捲曲語法是否危險?
$a = "{${phpinfo()}}";
phpinfo()函數將這個字符串聲明的上下文中執行。當我做$ a = $ _GET ['a']時,這似乎不會發生,並且將var設置爲等於{$ {phpinfo()}}。爲什麼不這樣做,這是否意味着曲線語法在這種方式下並不危險?
例如,如果我這樣做PHP的複雜捲曲語法是否危險?
$a = "{${phpinfo()}}";
phpinfo()函數將這個字符串聲明的上下文中執行。當我做$ a = $ _GET ['a']時,這似乎不會發生,並且將var設置爲等於{$ {phpinfo()}}。爲什麼不這樣做,這是否意味着曲線語法在這種方式下並不危險?
這是不危險的,因爲變量插值僅在編譯期間執行。這些序列必須物理地位於雙引號字符串/ heredoc文字內的代碼中。您必須動態生成文件或使用eval()
才能擔心這一點。
就像將雙引號改爲單引號一樣。
如果你有
$a = 10;
$b = "$a";
$c = '$a';
echo "b = $b\n";
echo "c = $c\n";
然後$ B將是相同爲$ a。 而$ C將美元從字面上
我看不出有什麼這與「捲毛語法」做。你的代碼執行一個函數,因爲你告訴它。當然,這可能會導致問題,因爲你執行的每一個命令。你當然不應該提供客戶端提供的數據,如果這就是你的意思。但是對於你執行的每一個命令來說都是如此...... – arkascha