跳到主要内容

简述分别指出php.ini中 magic_quotes_gpc, magic_quotes_runtime两项参数的作用 ?

参考答案:

php.ini 是 PHP 的主要配置文件,用于控制 PHP 解释器的各种设置和选项。其中,magic_quotes_gpcmagic_quotes_runtime 是两个关于魔术引号的配置选项,它们在早期的 PHP 版本中用来防止 SQL 注入等安全问题,但在现代 PHP 开发中,它们已经被视为过时并已被移除。

1. magic_quotes_gpc

magic_quotes_gpc 是一个布尔值(OnOff),用于控制 PHP 对通过 GET、POST 和 COOKIE 方法接收到的数据进行自动转义。当这个选项设置为 On 时,PHP 会自动在以下字符前添加反斜杠(\):

  • 单引号 (')
  • 双引号 (")
  • 反斜杠 (\)
  • NULL 字符

这个设置的目的是为了防止 SQL 注入攻击,因为它可以确保传递给 SQL 查询的字符串数据被正确转义。然而,这种自动转义并不总是可靠,因此现代的 PHP 开发中推荐使用参数化查询或预处理语句来防止 SQL 注入。

2. magic_quotes_runtime

magic_quotes_runtime 同样是一个布尔值(OnOff),用于控制 PHP 在运行时对字符串数据进行自动转义。当这个选项设置为 On 时,PHP 会在运行时的双引号或 heredoc 结构中的特殊字符前添加反斜杠。

这个选项主要用于保护那些可能包含特殊字符的字符串,以避免它们被解释为 PHP 代码。然而,由于它可能导致不可预测的行为和性能问题,因此现代 PHP 开发中通常建议关闭这个选项,并手动处理字符串转义。

注意

从 PHP 5.4.0 开始,magic_quotes_gpcmagic_quotes_runtime 已经被废弃,并在 PHP 5.5.0 中完全移除。现代 PHP 开发中,应该使用其他方法来处理字符串转义和防止安全问题,如使用 mysqliPDO 的预处理语句进行数据库操作,以及使用 htmlspecialchars() 或类似的函数来处理 HTML 输出。