什么是“贪婪令牌解析”?

时间:2011-07-29 19:59:43

标签: php parsing token greedy

什么是PHP中的贪婪令牌解析?我正在阅读PHP编码指南,其中说明了以下内容......

“除非您需要解析变量,否则始终使用单引号字符串,并且在需要解析变量的情况下,使用大括号来防止贪婪令牌解析。如果使用双引号字符串,也可以使用双引号字符串。 string包含单引号,因此您不必使用转义字符。“

这是否使用围绕我的变量的大括号某种安全过程来排除黑客行为? (例如{$ var})贪心令牌解析黑客可以使用的某种攻击,比如SQL注入或XSS(Cross Site Scriptiong

2 个答案:

答案 0 :(得分:16)

假设您希望字符“a”紧跟变量$var中包含的值。如果你写“$ vara”,那就不会有效,因为你没有变量$vara。解析器是贪婪的 - 它假定如果包含它的法律语法应该包括$之后的所有内容。 “$ {var} a”阻止了这一点。

答案 1 :(得分:5)

贪婪令牌解析意味着如果一系列字符包含多个可能的令牌,则解析器将接受带有最多字符的令牌。如果使用大括号,解析器将停在大括号,因为它不是令牌的一部分。