magic_quotes_sybase(魔术引号开关)

magic_quotes_sybase,如果该选项在php.ini文件中是唯一开启的话,将只会转义%00为\0(即null字符)。此选项会完全覆盖magic_quotes_gpc。如果同时开启这两个选项的话,单引号将会被转义成两个单引号,%00会被转义为\0。而双引号、反斜线将不会进行转义。

接下来,我们来证明一下下面两句话:

当magic_quotes_gpc关闭,magic_quotes_sybase开启,对四个特殊字符转义的影响。

当magic_quotes_gpc开启,magic_quotes_sybase开启,对四个特殊字符转义的影响。

对于第一种(设置:magic_quotes_sybase = On & magic_quotes_gpc = Off,然后,重新启动Apache使设置生效):

 

 

编写一个测试例程:

magic_sybase.php 源代码如下:

<?php

$a = $_GET['a'];

echo $a;

echo '<br />';

?>

在firefox中输入:http://localhost:81/magic_sybase.php?a=1’2”3\4%005

Webserver 返回如下信息:

 

1'2"3\45,看出什么没有,只将%00(即null字符)过滤了,看一下我们的php环境版本信息,是php5.3,当php version = 5.3时,只能过滤null字符,如图:

 

 

对于第二种(设置:magic_quotes_sybase = On & magic_quotes_gpc = On,然后,重新启动Apache使设置生效):

 

 

还是刚才那个例程,在firefox中输入:http://localhost:81/magic_sybase.php?a=1’2”3\4%005

Webserver 返回如下信息:

 

1''2"3\4\05,看到了吗,当:magic_quotes_sybase = On & magic_quotes_gpc = On时,magic_quotes_sybase将会使用单引号对单引号进行转义,%00(即null字符)也会被转义。

好了,magic_quotes_sybase就讲到这里了,注意,具体的php版本环境,应该具体测试,每种版本都会有不同的结果。

其实,magic_quotes_sybase在实际php开发中,已经没啥大用了,还是用magic_quotes_gpc安全实在一点,我们可以手动在php.ini文件中将他Off掉!

默认将这三个都Off掉,在php开发中可以手动使用addslashes函数实现安全转义,这样,更安全:

; Magic quotes are a preprocessing feature of PHP where PHP will attempt to

; escape any character sequences in GET, POST, COOKIE and ENV data which might

; otherwise corrupt data being placed in resources such as databases before

; making that data available to you. Because of character encoding issues and

; non-standard SQL implementations across many databases, it's not currently

; possible for this feature to be 100% accurate. PHP's default behavior is to

; enable the feature. We strongly recommend you use the escaping mechanisms

; designed specifically for the database your using instead of relying on this

; feature. Also note, this feature has been deprecated as of PHP 5.3.0 and is

; removed in PHP 5.4.

; Default Value: On

; Development Value: Off

; Production Value: Off

; http://php.net/magic-quotes-gpc

magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.

; http://php.net/magic-quotes-runtime

magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').

; http://php.net/magic-quotes-sybase

magic_quotes_sybase = Off

或者只留magic_quotes_gpc与magic_quotes_runtime,然后,在公共文件中写上如下代码进行判断:

if (get_magic_quotes_gpc())

{

$value = stripslashes($value);

}

if (get_magic_quotes_runtime())

{

$value = stripslashes($value);

}

stripslashes函数与addslashes函数,互为反函数,在此,大家若有不懂的地方可以多多问问度娘。

总结:

magic_quotes_sybase既没有对应的get函数,也没有对应的set函数,所以,不能直接在代码中设置该属性的值,看来目前也只能自己手动到php.ini文件中去设置了,希望能看到php社区可以开发出对应的get与set函数。

转载于:https://www.cnblogs.com/windclouds/p/5412926.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值