例如,如果我这样做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