如何在

时间:2016-07-06 00:29:07

标签: php xss

我正在创建一个函数,在将数据发送到视图之前从数据库中“清除”数据(转义html以避免使用xss)。所有数据都以1个数组传递。此数组包含包含其他变量和数组的变量和数组,依此类推。

这就是我现在拥有的,它有效,但它看起来并不正确。有没有办法避免为数组中的每个数组通过一个新的foreach?

public function clean_output(&$data)
{
  if(!is_array($data))
  {
    $data = htmlspecialchars($data);
  }
  else
  {
    foreach($data as &$data_1)
    {
      if(!is_array($data_1))
      {
        $data_1 = htmlspecialchars($data_1);
      }
      else
      {
        foreach($data_1 as &$data_2)
        {
          if(!is_array($data_2))
          {
            $data_2 = htmlspecialchars($data_2);
          }
          else
          {
            foreach($data_2 as &$data_3)
            {
              $data_3 = htmlspecialchars($data_3);
            }
          }
        }
      }
    }
  }
}

感谢Antoine,我得到了一个新功能。建议仍然欢迎离开!

public function clean_output(&$data)
    {
      if(!is_array($data))
      {
        $data = htmlspecialchars($data);
      }
      else
      {
        foreach($data as &$data_1)
        {
          $this->clean_output($data_1);
        }
      }
    }

1 个答案:

答案 0 :(得分:2)