首页 网络安全 安全学院 查看内容

关于magic_quotes_sybase

2009-5-25 11:44 735 0

摘要: 当php.ini设置magic_quotes_sybase为on时会覆盖magic_quotes_gpc为on的处理,然而magic_quotes_sybase仅仅是转义了nullbyte和把'变成了...
关键词: quotes magic sybase 转义 php addslashes length target nullbyte 代码

当php.ini设置magic_quotes_sybase为on时会覆盖magic_quotes_gpc为on的处理,然而magic_quotes_sybase仅仅是转义了nullbyte和把'变成了'' :) author: ryat#wolvez.orgteam:http://www.80vul.comdate:2009-04-14 一 描叙 magic_quotes_gpc为on时,php在注册变量时会调用addslashes()函数处理[既转义单引号、双引号、反斜线和nullbyte],但php.ini中还有另外一个选项影响着magic_quotes_gpc和addslashes()函数:当php.ini设置magic_quotes_sybase为on时会覆盖magic_quotes_gpc为on的处理,然而magic_quotes_sybase仅仅是转义了nullbyte和把'变成了'' 二 分析 先来看下addslashes的php源码:// string.c PHPAPI char *php_addslashes(char *str, int length, int *new_length, int should_free TSRMLS_DC) { return php_addslashes_ex(str, length, new_length, should_free, 0 TSRMLS_CC); } ... PHPAPI char *php_addslashes_ex(char *str, int length, int *new_length, int should_free, int ignore_sybase TSRMLS_DC) { ... if (!ignore_sybase && PG(magic_quotes_sybase)) { // 如果ignore_sybase=0[默认为0]且magic_quotes_sybase为on就执行下面的代码 while (source < end) { switch (*source) { case '\0': *target++ = '\\'; *target++ = '0'; break; case '\'': *target++ = '\''; *target++ = '\''; break; default: *target++ = *source; break; } source++; // 从上面的代码可以看到只是把null变成了\0,'变成了'' } } else { // 执行常规的转义 ... 由上面的代码可以看到,如果magic_quotes_sybase为on就会覆盖magic_quotes_gpc为on时的默认处理效果[而magic_quotes_sybase仅仅是转义了nullbyte和把'变成了'' :)] 然后我们看看关于magic_quotes_sybase定义的部分:// main.c STD_PHP_INI_BOOLEAN("magic_quotes_sybase", "0", PHP_INI_ALL, OnUpdateBool, magic_quotes_sybase, php_core_globals, core_globals) 可以看到,magic_quotes_sybase在php.ini里默认是关闭的,但是属于PHP_INI_ALL类型的指令,那么就可以在.htaccess或者httpd.conf里来更改magic_quotes_sybase的设置了. 如:// .htaccessphp_flag magic_quotes_sybase on 三 测试代码缺 四 实际应用缺
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部