PHP 是否安全 $_GET

标签 php get

我们有网址:

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/

相关文章:

php - 在mysql连接查询中使用变量

php - 为 PHP 模板学习 Smarty 值得吗?

php - Laravel get() 与()

phpMyadmin 错误 "continue"目标开关相当于 "break"

javascript - 在ajax请求中发送POST变量

php - YII2 安静的奇怪行为

php - 如何在PHP中处理多条件搜索

php - 如何 $_GET 多个复选框值?

php - 执行 $_SERVER ['PHP_SELF' ] 而不删除我的 $_GET 变量

php - 开发成员(member)系统以包括不同的角色