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(魔术引号开关)的更多相关文章
-
magic_quotes_gpc(魔术引号开关)
magic_quotes_gpc函数在php中的作用是判断解析用户提示的数据,如包括有:post.get.cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊 ...
-
magic_quotes_runtime(魔术引号开关)
我们可以通过以下代码来探测php环境中magic_quotes_runtime是否开启: magic_runtime.php 源代码如下: <?php //当magic_quotes_runti ...
-
什么是PHP魔术引号
今天在读EcShop的源码中发现里面有几个地方涉及到了PHP魔术引号,之前也碰到过都忽略过去了,再次碰到该深入的理解,虽然自PHP 5.3.0 起魔术引号被废弃废弃并将自 PHP 5.4.0 起移除, ...
-
PHP 魔术引号
1.魔术引号的作用是什么? 魔术引号设计的初衷是为了让从数据库或文件中读取数据和从请求中接收参数时,对单引号.双引号.反斜线.NULL加上一个一个反斜线进行转义,这个的作用跟addslashes( ...
-
PHP之魔术引号
什么是魔术引号 Warning 本特性已自 PHP5.3.0起废弃并将自PHP5.4.0起移除. 当打开,所有的'(单引号),"(双引号), (反斜线)和NULL 字符都会被自动加上一个反 ...
-
WEB安全 魔术引号及注入类型
一.魔术引号 1. magic_quotes_gpc 变量 什么是魔术引号 Warning本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除.当打开时,所有的 '(单引号),&q ...
-
char函数绕过魔术引号注入
我目前学习到的绕过魔术引号的几种方法(如果知道还有别的请万望告之): 1.倘若服务端是GBK可以尝试宽字节注入 2.使用char函数绕过魔术引号进行注入 3.同char函数类似的函数,例如bin(转换 ...
-
PHP安全设置
1.register_globals(全局变量注册开关) 2.magic_quotes_gpc(魔术引号开关) 3.magic_quotes_runtime(魔术引号开关) 4.magic_quote ...
-
PHP审计基础
php核心配置 register_globals 全局变量注册开关 设置为on时,把GET/POST的变量注册成全局变量 PHP 5.4.0中移除 allow_url_include 包含远程文件 设 ...
随机推荐
-
CentOS系统安装中文man手册
http://jingyan.baidu.com/article/f25ef25466bffc482c1b82b6.html
-
android datepicker源码
/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Versi ...
-
计算1到n整数中,字符ch出现的次数
个位ch个数 + 十位ch个数 * 10 + 百位ch个数 * 100:同时如果某一位刚好等于ch,还需要减去多算的一部分值. #include <stdio.h> //整数1到n,字符c ...
-
转: ubuntu配置NFS,挂载开发板
====================================== 命令: 1. $sudo apt-get install nfs-kernel-server (安装N ...
-
Chapter 11. Frame, MainWindow, and Toplevel Widgets 框架,主窗体,*部件
Chapter 11. Frame, MainWindow, and Toplevel Widgets 框架,主窗体,*部件 框架和Toplevels 都是设计用于其他部件的容器. 它们的不同在 ...
-
python dataframe 针对多列执行map操作
Suppose I have a df which has columns of 'ID', 'col_1', 'col_2'. And I define a function : f = lambd ...
-
mybatis分页+springmvc+jsp+maven使用步骤
作者注:本文主要用于个人学习.复习.同时欢迎指导讨论 1,添加maven依赖<dependency> <groupId>com.github.miemiedev ...
-
Educational Codeforces Round 30 D. Merge Sort
题意:给你n和k,n代表有多少个数,k代表几次操作,求一个1到n的序列,要k次mergesort操作才能还原 Examples Input 3 3 Output 2 1 3 Input 4 1 Out ...
-
Oracle如何扩展表空间
一: --查看表空间的名字及文件所在位置 select tablespace_name, file_id, file_name, ), ) total_space from sys.dba_data_ ...
-
直和 direct sum
小结: 1.xy平面 与 直和 https://en.wikipedia.org/wiki/Direct_sum For example, the xy-plane, a two-dimension ...