我们有网址:
http://site.com/index.php?action=show
$_GET['action']
在模板中用于检查 ?action=
的值:
switch ($_GET['action']) {
case = "show" {
$match_show = true;
}
}
在其他地方:
echo $_GET['action'];
使用这种结构绝对安全吗?
如何使它们安全?
谢谢。
最佳答案
switch 没问题,因为您正在与硬编码值进行比较(但是,它是 case "show":
btw)。
正如@Bruce 在评论中提到的,您还应该添加一个 default:
大小写以捕获不在列表中的值或空值:
switch ($_GET['action']) {
case "show":
$match_show = true;
break;
default:
// value is not on the list. React accordingly.
echo "Unknown value for 'action'".
}
第二件事是有潜在危险的,因为有可能将 HTML 以及更重要的是 JavaScript 注入(inject)到文档主体中。在回显它之前,您应该在变量上应用 htmlspecialchars()
。
关于PHP 是否安全 $_GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388983/