Php 哪些超球会受到magic_quotes_gpc=1的影响?
通过查看该指令的名称,人们可能会认为Php 哪些超球会受到magic_quotes_gpc=1的影响?,php,magic-quotes-gpc,Php,Magic Quotes Gpc,通过查看该指令的名称,人们可能会认为magic\u quotes仅适用于$\u GET、$\u POST和$\u COOKIE超全局,但有: 请注意,当 magic\u quotes\u gpc不仅设置了 $\u POST,$\u GET,$\u REQUEST,$\u COOKIE 数组值被斜杠。事实上 $GLOBALS数组中的每个字符串值 被割伤了。 $GLOBALS[''u SERVER']['PATH\u INFO'](或 $\u服务器['PATH\u INFO']) 有人能证实这是真的
magic\u quotes
仅适用于$\u GET
、$\u POST
和$\u COOKIE
超全局,但有:
请注意,当
magic\u quotes\u gpc
不仅设置了
$\u POST
,$\u GET
,$\u REQUEST
,$\u COOKIE
数组值被斜杠。事实上
$GLOBALS
数组中的每个字符串值
被割伤了。
$GLOBALS[''u SERVER']['PATH\u INFO']
(或
$\u服务器['PATH\u INFO']
)
有人能证实这是真的吗?超级全局$GLOBALS
,$\u服务器
,$\u文件
,$\u会话
和$\u环境
是否也受到影响
还有一个问题,如果我在
$\u GET
、$\u POST
和$\u COOKIE
数组上迭代stripslashes()
,我是否也需要迭代$\u请求
数组?或者这些变化是自动反映出来的?我已经在LightTPD 1.4.20
和PHP5.3.0
上运行了一些测试,使用magic\u quotes\u gpc=on
和$\u服务器
没有改变(至少[SERVER\u NAME]=>本地主机
没有改变)<代码>$\u会话也不受魔法引号的影响
$\u GET
、$\u POST
、$\u COOKIE
和$\u请求
受到影响(以及它们的$GLOBALS
对应方)
此外,GPC
超全局变量中的更改不会自动反映在$\u请求中
至于$\u文件
和$\u ENV
超全局文件,我无法对它们进行测试
我终于运行了这个测试,出乎意料的是,$\u文件和php://input
受到影响。无论如何,我建议您不要依赖GPC,因为它在较新的PHP版本中已被弃用
这可能与您的问题不太相关,但在提出的SQL安全替代方案问题上,我通常使用prepared statements+mysql\u real\u escape\u string for mysql
为了使其接近完美,它需要几个函数,因为它还应该支持整型、布尔型和空值,但您可以查看数据库上的源代码和数据库上的mysql类。为什么投反对票?这是一个完全合理的问题…我建议你自己测试一下。应该很容易。此外,请尝试查看是否可以在php设置或.htaccess文件中禁用magic_引号。更容易。依赖于magic_引号、addslashes和stripslashes是一个严重的安全缺陷。我总是引用魔法语录。如果我不能,例如,我无法控制安装,我的脚本会检测到它并终止。对作业使用正确的函数,从所有用户可访问的输入中筛选所有输入,例如,对传递给mysql的变量使用mysql\u real\u escape\u字符串,或者使用准备好的语句或更好的存储过程。我不依赖magic\u引号,我只是在magic\u引号存在且启用时处理它们。您在NaturePHP上搞错了(您假设传递的每个变量都来自GPCR),但这是一个很好的项目,祝贺您。=)Thanx,我将检查它并在下一个版本中更正它:)