什么是PHP中的贪婪令牌解析?我正在阅读PHP编码指南,其中说明了以下内容......
“除非您需要解析变量,否则始终使用单引号字符串,并且在需要解析变量的情况下,使用大括号来防止贪婪令牌解析。如果使用双引号字符串,也可以使用双引号字符串。 string包含单引号,因此您不必使用转义字符。“
这是否使用围绕我的变量的大括号某种安全过程来排除黑客行为? (例如{$ var})贪心令牌解析黑客可以使用的某种攻击,比如SQL注入或XSS(Cross Site Scriptiong
答案 0 :(得分:16)
假设您希望字符“a”紧跟变量$var
中包含的值。如果你写“$ vara”,那就不会有效,因为你没有变量$vara
。解析器是贪婪的 - 它假定如果包含它的法律语法应该包括$
之后的所有内容。 “$ {var} a”阻止了这一点。
答案 1 :(得分:5)
贪婪令牌解析意味着如果一系列字符包含多个可能的令牌,则解析器将接受带有最多字符的令牌。如果使用大括号,解析器将停在大括号,因为它不是令牌的一部分。