Php 检查是否存在任何其他POST变量,确保它不是必需的

Php 检查是否存在任何其他POST变量,确保它不是必需的,php,Php,我注意到(阅读我管理的网站日志),黑客试图提交帖子请求,字面意思是“发明”帖子变量名称 一些网站使用旧的PHP代码,例如 if (isset($_POST["mail"]) && !empty($_POST["mail"])) { //... }else{ exit; } 这基本上检查是否存在$u POST变量“mail”,并且它不是空的 是否可以检查是否存在任何不是“邮件”的$\u POST变量,并在这种情况下退出脚本?用于检查差异: $whiteli

我注意到(阅读我管理的网站日志),黑客试图提交帖子请求,字面意思是“发明”帖子变量名称

一些网站使用旧的PHP代码,例如

if (isset($_POST["mail"]) && !empty($_POST["mail"])) {
    //...  
}else{  
    exit;
}
这基本上检查是否存在$u POST变量“mail”,并且它不是空的

是否可以检查是否存在任何不是“邮件”的$\u POST变量,并在这种情况下退出脚本?

用于检查差异:

$whitelist = ['mail' => null];

$hasOthers = !empty(array_diff_key($whitelist, $_POST));
用于检查差异:

$whitelist = ['mail' => null];

$hasOthers = !empty(array_diff_key($whitelist, $_POST));

我有一种不同的方式使用过滤器,而不是直接访问$\u POST。 首先,您必须创建您感兴趣的$\u POST元素的定义。所以您必须创建一个带有相应过滤器的数组,例如登录定义

$definition = array(
    ["mail"] => FILTER_SANITIZE_EMAIL,
    ["passwd"] => FILTER_SANITIZE_STRING
);
接下来,您可以使用

最后,您可以使用一个filter常量再次过滤所有$\u POST值(记住所有$\u POST元素都是字符串)

因此,为了知道是否有人注入了另一个$\u POST字段,我们可以比较两个数组的count()

if(count($desirablePost) !== count($allPost)){
    //error or exit(1) ...
}

我有一种不同的方式使用过滤器,而不是直接访问$\u POST。 首先,您必须创建您感兴趣的$\u POST元素的定义。所以您必须创建一个带有相应过滤器的数组,例如登录定义

$definition = array(
    ["mail"] => FILTER_SANITIZE_EMAIL,
    ["passwd"] => FILTER_SANITIZE_STRING
);
接下来,您可以使用

最后,您可以使用一个filter常量再次过滤所有$\u POST值(记住所有$\u POST元素都是字符串)

因此,为了知道是否有人注入了另一个$\u POST字段,我们可以比较两个数组的count()

if(count($desirablePost) !== count($allPost)){
    //error or exit(1) ...
}

好的,这正是我想要的!:-)好的,这正是我想要的!:-)