转义引号 - 从PHP4转到PHP5

时间:2012-02-10 09:56:44

标签: php security php4

我继承了一个需要在我的PHP5服务器上运行的php4站点,我已经解决了大部分问题,但无法弄清楚作者在这里尝试做什么。好吧,确切地说,他想引用提交的文本,但我不确定这个函数应该如何工作以及我应该如何在PHP5中完成它?

# Function to safely add slashes when magic quotes is switched off

function safe_slash($string)
{
  if (!get_magic_quotes_gpc())
  {
    $string = addslashes($string);
  }

  return $string;
} 

2 个答案:

答案 0 :(得分:2)

默认情况下,PHP4在PHP.ini中有一个名为magic_quotes_gpc的选项,它会addslashes到所有$_POST/$_GET个变量。

该代码只是检查值magic_quotes_gpc是否已关闭,如果是,它将addslashes传递给$ string。

它应该在PHP4和PHP5中工作(在PHP6中,magic_quotes_gpc将被删除,我相信)。不建议依赖它,它最初是为了“保护”SQL注入而已被发现不足。

答案 1 :(得分:-1)

$_POST = self::addSlashesRecursive($_POST);
$_GET = self::addSlashesRecursive($_GET);
$_COOKIE = self::addSlashesRecursive($_COOKIE);

function addSlashesRecursive($s)
{
    if (get_magic_quotes_gpc()) {
        return $s;
    }
    if (is_string($s)) {
        return addslashes($s);
    } else if (is_array($s)) {
        return array_map(array('addSlashesRecursive'), $s);
    }
    return $s;
}

但是我觉得改变你的代码会更好。在PHP6中,magic_quotes将被删除。