php - 如何安全地检查超全局 POST['key'] 的类型?
问题描述
我怎样才能安全地检查超全球帖子的类型[key]?例如,我有以下代码:
$ufo = false;
if (filter_has_var(INPUT_POST, 'key')) {
if (is_string($_POST['key'])) { // <- IS THIS SAFE?
$ufo = filter_input(INPUT_POST, 'key', FILTER_SANITIZE_STRING);
} elseif (is_array($_POST['key'])) { // <- IS THIS SAFE?
$ufo = filter_input_array(INPUT_POST, 'key', FILTER_SANITIZE_STRING);
}
}
有没有更安全的方法来检查发布变量的类型?
解决方案
将该isset()
函数与您想要执行的任何检查一起使用将使其“更安全”,因为如果未设置或定义变量或索引,您的代码不会被破坏。
isset — 确定变量是否已设置且不为 NULL
在这方面,您可以按如下方式重写您的代码:
$ufo = false;
if (isset($_POST['key'])) {
if (is_string($_POST['key'])) { // <- IS THIS SAFE?
$ufo = filter_input(INPUT_POST, 'key', FILTER_SANITIZE_STRING);
} elseif (is_array($_POST['key'])) { // <- IS THIS SAFE?
$ufo = filter_input_array(INPUT_POST, 'key', FILTER_SANITIZE_STRING);
}
}
推荐阅读
- java - 如何在 JAVA 中下载后获取 .zip 文件的动态名称
- html - 用画布创建图案
- html - 如何检查哪个 span 标签当前处于活动状态
- progressive-web-apps - 是否可以查看是否从 APP Store 与移动浏览安装了 PWA?
- c++ - 将 v8 args 转换为 std::string
- mongoose - findByIdAndRemove 不能在 Mongoose 中同时删除多个文档
- c# - C# ObservableCollection 不会出现在 MVVM 的 TreeView 中
- java - Hibernate 在创建表之前尝试更改表
- c - 计时器内的延迟(正确的方法是什么)
- python - Python,将坐标度转换为小数点