我理解,您永远不应该信任表单中的用户输入,这主要是因为SQL注入的可能性.

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

我将$_POST['size']保存到一个会话中,然后在整个站点中使用该会话来查询各种数据库(使用mysqli Select查询),任何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>

推荐答案

你可以做一些简单的事情,如下面的例子,以确保发布的大小是你所期望的.

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

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

Then use mysqli_* if you are using a version of php >= 5.3.0 which you should be, to save your result. If used correctly this will help with sql injection.

Php相关问答推荐

PHP Mail到Googlmail.仅SPF

来自另一个表的SQL过滤器

如何使用PHP停止foreach循环中的重复项?

PHP DOMDocument忽略第一个表S结束标记

管理员订单列表中的自定义列与WooCommerce 8.6.1一起消失

PHP如何将ARRAY_MAP与Reset()配合使用

Laravel 10 -扩展现有的artisan命令?

RediSearch PHP希望我在每次使用时定义所有字段

模仿GUZLE中的curl 工作脚本(分块数据和二进制上传一起)

PHP -流加密启用服务器切断字节

如果所有请求都通过index.php路由,如何使用htaccess文件强制使用HTTPS?

显示 woocommerce 中所选变体的属性术语描述

为什么从一个页面到另一个页面都找不到 JQuery,因为它们使用相同的 twig 模板?

标签打印机的 CSS

woocommerce checkout 页面上的自定义字段

在shopware 6.5上可以使用什么事件来判断刚刚支付的订单的状态

Woocommerce API 的 PHP Curl 附加参数

使用来自 PHP 表单的数据更新 xml 命名空间

每个发布请求 Laravel 9 的 CSRF 令牌不匹配

为什么可以从 PHP 类访问 PHP Trait 的私有成员?