避免选择值操纵

时间:2018-10-11 11:08:09

标签: php html

我正在尝试避免对使用html检查器进行的选择进行任何操作。

我的代码:

<select name="select">
  <option value="1">1</option>
  <option value="2">2</option>
</select>

我将其提交给数据库,如下所示:

$select = $_POST['select'];
$statement = $pdo->prepare('INSERT INTO option (select) VALUES(?)');
$statement->execute(array($select));

如果某人更改了选项的“值”部分,则会提交操纵的选项值。我该如何解决?

2 个答案:

答案 0 :(得分:4)

您永远不应信任前端的数据。始终检查后端的值。喜欢

$select = intval($_POST['select']);
if( $select === 1 || $select === 2)
{
    $statement = $pdo->prepare('INSERT INTO option (select) VALUES(?)');
    $statement->execute(array($select));
}
else
{
    // something is fishy
}

编辑:(以覆盖评论)

输入具有一些可接受的范围或值。精确地是[1,2或5]还是1到100000000之间的任何值都没有关系。您设置边界检查,对照数据库进行检查等,以确保您取回可接受的值。

上面的代码已简化。检查您得到的类型。如果希望使用整数,请执行intval($var)以确保得到整数。还要检查字符串的长度。在此处查看更多信息:https://www.guru99.com/equivalence-partitioning-boundary-value-analysis.html

答案 1 :(得分:3)

  

我正在尝试避免对使用html检查器进行的选择进行任何操作。

不能。用户的浏览器中发生的事情与您无关。您不是用户。这是他们的浏览器。

您无法控制将什么提交到HTTP端点。

您只能编写服务器端代码来对此作出反应。例如如果提交了不可接受的值,则会返回错误消息。