一尘不染

如果使用下拉菜单,是否必须防止SQL注入?

mysql

我知道您绝不应该信任表单中的用户输入,主要是因为有注入SQL的机会。

但是,这是否也适用于唯一输入来自下拉菜单的表单(请参见下文)?

我将其保存$_POST['size']到一个Session中,然后在整个站点中使用它来查询各种数据库(使用mysqliSelect查询),任何SQL注入肯定会损害(可能会删除)它们。

没有类型输入的用户输入可以查询数据库的区域,只有下拉列表。

<form action="welcome.php" method="post">
<select name="size">
  <option value="All">Select Size</option> 
  <option value="Large">Large</option>
  <option value="Medium">Medium</option>
  <option value="Small">Small</option>
</select>
<input type="submit">
</form>

阅读 440

收藏
2020-05-17

共1个答案

一尘不染

您可以像以下示例一样简单地进行操作,以确保发布的大小符合您的期望。

$possibleOptions = array('All', 'Large', 'Medium', 'Small');

if(in_array($_POST['size'], $possibleOptions)) {
    // Expected
} else {
    // Not Expected
}

如果要使用的PHP> = 5.3.0版本,请使用mysqli_ *来保存结果。如果正确使用,这将有助于sql注入。

2020-05-17