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函数。

magic_quotes_sybase(魔术引号开关)的更多相关文章

  1. magic_quotes_gpc(魔术引号开关)

    magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post.get.cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊 ...

  2. magic_quotes_runtime(魔术引号开关)

    我们可以通过以下代码来探测php环境中magic_quotes_runtime是否开启: magic_runtime.php 源代码如下: <?php //当magic_quotes_runti ...

  3. 什么是PHP魔术引号

    今天在读EcShop的源码中发现里面有几个地方涉及到了PHP魔术引号,之前也碰到过都忽略过去了,再次碰到该深入的理解,虽然自PHP 5.3.0 起魔术引号被废弃废弃并将自 PHP 5.4.0 起移除, ...

  4. PHP 魔术引号

    1.魔术引号的作用是什么? ​ 魔术引号设计的初衷是为了让从数据库或文件中读取数据和从请求中接收参数时,对单引号.双引号.反斜线.NULL加上一个一个反斜线进行转义,这个的作用跟addslashes( ...

  5. PHP之魔术引号

    什么是魔术引号 Warning 本特性已自 PHP5.3.0起废弃并将自PHP5.4.0起移除. 当打开,所有的'(单引号),"(双引号),  (反斜线)和NULL 字符都会被自动加上一个反 ...

  6. WEB安全 魔术引号及注入类型

    一.魔术引号 1. magic_quotes_gpc 变量 什么是魔术引号 Warning本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除.当打开时,所有的 '(单引号),&q ...

  7. char函数绕过魔术引号注入

    我目前学习到的绕过魔术引号的几种方法(如果知道还有别的请万望告之): 1.倘若服务端是GBK可以尝试宽字节注入 2.使用char函数绕过魔术引号进行注入 3.同char函数类似的函数,例如bin(转换 ...

  8. PHP安全设置

    1.register_globals(全局变量注册开关) 2.magic_quotes_gpc(魔术引号开关) 3.magic_quotes_runtime(魔术引号开关) 4.magic_quote ...

  9. PHP审计基础

    php核心配置 register_globals 全局变量注册开关 设置为on时,把GET/POST的变量注册成全局变量 PHP 5.4.0中移除 allow_url_include 包含远程文件 设 ...

随机推荐

  1. BZOJ 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏

    Description Farmer John 想让她的奶牛准备郡级跳跃比赛,贝茜和她的伙伴们正在练习跨栏.她们很累,所以她们想消耗最少的能量来跨栏. 显然,对于一头奶牛跳过几个矮栏是很容易的,但是高 ...

  2. [原博客] POI系列(3)

    正规.严谨.精妙. -POI BZOJ 1131 : [POI2008]Sta 树形dp吧,让求找一个点使以这个点深度和最小.首先可以随便整出来一棵树,对于每个节点记录down[i]以i为根下面的点的 ...

  3. [原博客] BZOJ 2242 [SDOI2011] 计算器

    题目链接 noip级数论模版题了吧.让求三个东西: 给定y,z,p,计算`Y^Z Mod P` 的值. 给定y,z,p,计算满足`xy≡ Z ( mod P )`的最小非负整数. 给定y,z,p,计算 ...

  4. sharepoint 2013创建外部内容类型并创建外部列表

    步骤: 1.如何:基于 SQL Server 表创建外部内容类型 How to: Create an External Content Type Based on a SQL Server Table ...

  5. angular中实现jQuery的Document Ready

    angular中不推荐混用JQuery的,原因呢问度娘. 其实这是一个比较蛋疼的问题,尤其是angular2.0,尽量不要在页面上写js,用ts写到模块里面去吧.. 汲取各位先人的智慧,还是列一下 w ...

  6. PYTHON之DEF

    def sayHello(): print('Hello World!') while True: s = input('Enter something : ') if s == 'quit': br ...

  7. 用PYTHON + PYWIN32 + WMI获取WINDOWS系统基本信息

    网上原码,去了DECODE编码的问题. PyScripter这个PYTHON的IDE工具在WIN下表现不错哟. 感觉比SPYDER,ERIC,SUBLEME TEXT3之类的好用呀.. #!/usr/ ...

  8. Android 通过代码设置radiobutton不同方位图标的两种方法

    更换radiobutton中的图片在xml中很好设置,但对于初学者如何在代码中设置还是不容易找的.没法子,通过看原版api找到两个方法,setCompoundDrawables和setCompound ...

  9. Android ListView中 每一项都有不同的布局

    实现代码 Adapter的代码 其中:ViewHolder分别是三个不同的布局,也就是ListView中每一项的布局 TYPE_1...是三种类型. 在使用不同布局的时候,getItemViewTyp ...

  10. 时区 : America/Mexico_City 中文:美国中部时间(墨西哥城) 的夏令时

    方法: (参数为: TimeZone timeZone = TimeZone.getTimeZone("America/Mexico_City"); private static ...