【发布时间】:2011-08-10 08:55:31
【问题描述】:
我发布它是为了在特定情况下进行澄清,尽管用户输入清理/验证是陈词滥调的主题。
一段代码包含
$haystack=$_GET['user'];
$input 永远不会用于 'echo' 或 'print' 或任何 SQL 查询或任何此类事情。用户输入 ($haystack) 的唯一进一步用途是检查字符串是否包含预定义的 $needle。
if (preg_match($needle,$haystack)) {
$result="A";
} else {
$result="B";
}
我担心的是恶意代码的执行,而不是用户输入中存在恶意代码。
所以问题是,如果用户输入仅在上述上下文中使用(在 echo、print、SQL 等中没有使用),是否仍有可能执行用户输入中的恶意代码。
我想添加上下文所需的安全措施,而不是过度使用。
【问题讨论】:
-
我认为没有问题,但最大的问题是如果你忘记了哪个变量被清理了。或者,如果您认为它已被消毒后的其他程序员。我知道这是一种很好的工作方式(不检查就忘记但可能发生),更好地创建一个清理功能,您可以轻松地将其应用于任何输入。或将您的已清理变量放在清楚标记的变量名称中,例如 $clean_xxx