6

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

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

这是在我的变量周围使用花括号某种安全过程来排除黑客攻击吗?(例如 {$var})是贪婪的令牌解析黑客可以使用的某种攻击,例如 SQL 注入或 XSS(跨站点脚本

4

2 回答 2

16

假设您希望字符“a”紧跟在 variable 中包含的值之后$var。如果你写“$vara”,那是行不通的,因为你没有变量$vara。解析器是贪婪的——它假定如果包含以下所有内容$是合法的语法,则应该包含它。"${var}a" 可以防止这种情况。

于 2011-07-29T20:02:53.853 回答
5

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

于 2011-07-29T20:03:01.930 回答