【问题标题】:What is "Greedy Token Parsing"?什么是“贪婪令牌解析”?
【发布时间】:2011-10-16 05:49:42
【问题描述】:
什么是 PHP 中的贪婪令牌解析?我正在阅读一份 PHP 编码指南,其中包含以下内容...
“除非您需要解析变量,否则请始终使用单引号字符串,并且在确实需要解析变量的情况下,使用大括号来防止贪婪的令牌解析。如果您也可以使用双引号字符串,如果字符串包含单引号,因此您不必使用转义字符。"
这是否在我的变量周围使用花括号某种安全过程来排除黑客攻击? (例如 {$var})贪婪令牌解析黑客可以使用的某种攻击,例如 SQL 注入或 XSS(跨站点脚本
【问题讨论】:
标签:
php
parsing
token
greedy
【解决方案1】:
假设您希望字符“a”紧跟在变量$var 中包含的值之后。如果你写“$vara”,那是行不通的,因为你没有变量$vara。解析器是贪婪的——它假定$ 之后的所有内容都应该包括在内,如果包含它是合法的语法。 "${var}a" 可以防止这种情况发生。
【解决方案2】:
贪婪令牌解析意味着如果一个字符序列包含多个可能的令牌,解析器将接受具有大多数个字符的令牌。如果使用大括号,解析器将在大括号处停止,因为它不是令牌的一部分。