【问题标题】:dynamic $ _ POST validation issue with inspect element检查元素的动态 $ _ POST 验证问题
【发布时间】:2015-09-05 17:57:49
【问题描述】:

我正在动态验证所有$_POST 字段。问题是访问者可以使用 Inspect Element 将 name 属性更改为其他任何属性并提交表单,并且不会发生验证。例如,如果客户端将 name 属性从 email 更改为随机词,则不会对该字段进行验证。我该如何防止这种情况。我必须动态获取所有的帖子字段

<input type = "text" name = "email[0]">
<input type = "text" name = "aphabets[1]">
<input type = "text" name = "numbers[1]">

foreach ($_POST as $key => $value) {
foreach($value as $k => $v){
if ($key[$i] === "email"){
email($v);
}
if ($key[$i] === "numbers"){
required($v);
}
}
}
function email($v){
//validate email
}
function required($v){
//validate email
}

【问题讨论】:

  • 为什么不直接拒绝它,如果它是空的?

标签: php validation inspect-element


【解决方案1】:

您不能相信客户端会告诉您验证规则是什么。这包括您发送给客户端并希望原封不动地返回的数据。

也就是说……

访问者可以使用 Inspect Element 将 name 属性更改为其他任何内容并提交表单,验证将不会发生

如果他们将名称更改为您不希望处理的名称,则处理它没有任何意义。

必须动态获取所有帖子字段

为什么你必须获得所有字段?

如果字段名称与您期望的模式不匹配,那么除了不知道如何验证它之外,您也不知道如何处理它。

这不是您编写表单要求的字段。你为什么要接受它?

您的系统输入无效。忽略它或将错误返回给浏览器。

【讨论】:

  • 没有。要想实现这一点,您必须信任来自客户端的数据,而您不信任。
【解决方案2】:

使用可以使用 jquery、Jquery validate 插件等等..

【讨论】:

  • 这会使它容易受到用户干扰,而不是更少。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多