如果将 POST 或 GET 数据直接扔到 switch() 语句中,是否需要验证?例如:
switch($_GET['input']) {
//...
}
???
如果将 POST 或 GET 数据直接扔到 switch() 语句中,是否需要验证?例如:
switch($_GET['input']) {
//...
}
???
不,你case
基本上是验证。
switch 语句类似于同一表达式上的一系列 IF 语句。在许多情况下,您可能希望将同一个变量(或表达式)与许多不同的值进行比较,并根据它等于哪个值来执行不同的代码。这正是 switch 语句的用途。
请注意,开关/案例确实比较松散。
<?php
switch ($i) {
case "apple":
echo "i is apple";
break;
case "bar":
echo "i is bar";
break;
case "cake":
echo "i is cake";
break;
default:
echo "";
break;
}
?>
所以,简短的回答是“不”。
如果您的开关不包含真实案例,但如果您这样做,则default
需要验证$_GET
是否在这种情况下使用它。
例如:
switch ($_GET['input']) {
case 'one':
echo "input is one";
break;
case 'two':
echo "input is two";
break;
default:
// here `$_GET['input']` need to be validated, escaped, checked if you use it to avoid XSS or SQL injections
echo $_GET['input'];
}