如何从$ _ post中安全处理数组



我的php脚本正在通过$ _post接收数组。数组具有(或有望具有)以下格式:

array (
  0 => 
  array (
'Datum' => 
array (
  0 => '2016-11-29',
  1 => '2016-11-29',
  2 => '2016-11-29',
),
'VK' => 
array (
  0 => '18 Worker',
  1 => '1 Other Worker',
  2 => '11 One more worker',
),
'Dienstbeginn' => 
array (
  0 => '08:00',
  1 => '08:00',
  2 => '08:30',
),
'Dienstende' => 
array (
 0 => '14:00',
  1 => '16:30',
  2 => '16:00',
),
'Mittagsbeginn' => 
array (
  0 => '',
  1 => '11:30',
  2 => '12:00',
),
'Mittagsende' => 
array (
  0 => '',
  1 => '12:00',
  2 => '12:30',
),
'Kommentar' => 
array (
  0 => '',
  1 => '',
  2 => '',
    ),
  ),
)

我有一个将用户数据写入我自己的变量的函数,并将空白输入转换为null值以供数据库存储。

foreach ($_POST['Dienstplan'] as $plan => $inhalt_tag) {
    foreach ($inhalt_tag as $column => $lines) {
        foreach ($lines as $linenumber => $line) {
            if ($line === '') {
                //Empty fields should be inserted as null values inside the database.
                //TODO: Should we make an exeption for Comments?
                $line = 'null';
            }
            //TODO: Is it a security issue, that we use $column and $linenumber directly? Do we have to sanitize those?
            $Dienstplan[$plan][$column][$linenumber] = sanitize_user_input($line);
        }
    }
}

function sanitize_user_input($data) {
  $clean_data = htmlspecialchars(stripslashes(trim($data)));
  return $clean_data;
}

这种方法有多安全?我可以在这种情况下保存$ plan,$ column和$ linenumber吗?攻击者可以用来破坏事物的第一点在哪里?

这种方法有多安全?我可以在这种情况下保存$ plan,$ column和$ linenumber吗?

否。您正在使用错误的工具在多个层。

  1. 如果您要预防SQL注入,请使用准备好的陈述而不是逃避输入。
  2. 如果您想防止跨站点脚本,逃脱输出,切勿输入。

如果要验证结构化输入(即用于类型安全,也要执行输入白人),请查看Ionizer。

相关内容

  • 没有找到相关文章

最新更新