【问题标题】:Set function for each array为每个数组设置函数
【发布时间】:2010-11-29 20:26:10
【问题描述】:

现在我使用:

<?php
$_POST = array_map(mysql_real_escape_string, $_POST);
$_GET = array_map(mysql_real_escape_string, $_GET);
$_COOKIE = array_map(mysql_real_escape_string, $_COOKIE);
$_REQUEST = array_map(mysql_real_escape_string, $_REQUEST); 

但如果 $_POST 有多个数组 ($_POST['s'][1]) 则它不起作用。如何为每个数组设置函数?

【问题讨论】:

  • 当您到达数据库层时,您确实应该根据具体情况执行此操作。不是像这样一气呵成的。出于这个原因,还有许多其他原因。最重要的是,这并不能保护您免受每一次攻击,而且会产生虚假的安全感。

标签: php arrays function


【解决方案1】:
<?php

function escape_recursive($item) {
    return is_array($item) ?
        array_map("escape_recursive", $item) :
        mysql_real_escape_string($item);
}

$_POST = array_map("escape_recursive", $_POST);
// etc...

?>

但请参阅 DampeS8N 的评论——如果你这样做,你做错了安全......

【讨论】:

    【解决方案2】:

    您想使用递归函数来解决您的问题,如下所示:

    function recursive_array_map($input){
       if(is_array($input)){
            return array_map('recursive_array_map',$input);
       }
    
       return array_map(mysql_real_escape_string, $input);
    } 
    
    $_POST = recursive_array_map(mysql_real_escape_string, $_POST);
    

    我只是在这里写的,所以不确定它是否真的有效;) 试试吧!

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 2014-10-05
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多