大多的PHP程序,都有这样的逻辑:

如果发现php.ini配置为不给GPC变量自动添加转义斜线,则PHP自动为GPC添加转义斜线

但是事实上,这是错误的,因为它改变了GPC变量原来的值.

有这个遗留习惯的原因是PHP程序使用往往配合mysql, 而mysql对特殊字符的转义,采取的是添加转义斜线,但是其它数据如mssql,oci呢,不一定是这样的.

如果使用其它类型数据库,如mssql,oci,sybase 那么,给GPC添加转义斜线,更是个错误

进一步,如果GPC数据不需要存入数据库,而保存到文件系统,或转发给其它程序呢?更是很严重的错误逻辑.

所以,正确的做法是:
1.PHP程序入口去掉转义斜线(若php.ini配置为自动添加转义斜线)
2.在写入mysql时,使用mysql_real_escape_string而不是addcslashes来转义变量
因为前者比后者更为安全(字符集相关的)

db类中已考虑到这个问题,详情参阅db_mysql.class.php,搜寻mysql_real_escape_string

目前有以下案例:
积分商城的php.ini配置为自动添加转义斜线,用户提交的数据写入cookie时,需要及时去掉斜线
discuz 6.0的论坛,特殊用户名中的"頫"经过addcslashes处理后,竟然变成"頫/",后面多了一个斜线,这是discuz 6的一个bug.

那么,综述一下:
1.针对系统管理员,应该配置php.ini
magic_quotes_gpc=Off
magic_quotes_runtime=Off
magic_quotes_sybase=Off

针对php开发人员,更准确的逻辑:

1.检查php环境是否配置为自动添加转义斜线,若是,应该调用stripslashes去掉$_REQUEST, $_GET,$_POST,$_COOKIE的转义斜线

2.查询/写入/修改数据至mysql时,再使用mysql_real_escape_string转义之

转载于:https://www.cnblogs.com/chengJAVA/p/4331629.html

PHP magic_quotes_gpc相关推荐

  1. 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法

    PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和magic_quotes_runtime, 这两个函数如果在php.ini设置为ON的时候,就会为我们引用的数据碰到单引号 ...

  2. php中magic_quotes_gpc对unserialize的影响

    昨天朋友让我帮他解决下他网站的购物车程序的问题,程序用的是PHPCMS,换空间前是好的(刚换的空间),具体问题是提示成功加入购物车后跳转到购物车页面,购物车里为空. 我看了下代码,大致的原理就是将产品 ...

  3. php5.3中的safe_mod与magic_quotes_gpc

    2019独角兽企业重金招聘Python工程师标准>>> 去官方看了下,用红色的block特别注明了,php5.3已经不推荐使用这个东东了,在 PHP6 中已经将其废弃: magic_ ...

  4. magic_quotes_gpc和magic_quotes_runtime的区别和用法详解

    当你的数据中有一些     "  ' 这样的字符要写入到数据库里面,又想不被过滤掉的时候,它就很有用,会在这些字符前自动加上,如 中国地大物博"哈哈" 中国\地大物博&q ...

  5. PHP中 magic_quotes_gpc 和 magic_quotes_runtime 区别及其反斜线转义问题

    php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc  或 magic_quotes_runtime      设置为on时,当数据遇到 单引号' 和 双引号&quo ...

  6. magic_quotes_gpc与magic_quotes_runtime区别

    magic_quotes_runtime:针对数据库,开启时对添加入数据库的特殊字符在前面自动添加"\". magic_quotes_gpc:针对通过get/post/cookie ...

  7. magic_quotes_gpc合magic_quotes_runtime的区别!

    PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和 magic_quotes_runtime,这两个函数如果在php.ini设置为ON的时候,就会为我们引用的数据碰到单引号 ...

  8. php.ini中Magic_Quotes_Gpc开关设置

    如果你网站空间的php.ini文件里的magic_quotes_gpc设成了off,那么PHP就不会在敏感字符前加上反斜杠(\\),由于表单提交的内容可能含有敏感字符,如单引号('),就导致了SQL ...

  9. PHP中magic_quotes_gpc和magic_quotes_runtime的区别、作用和用法

    这两天遇到一个奇怪的问题,用CKEditor编辑的内容在本地测试服务器能保存,在正式服务器不能保存,程序代码是一模一样的,数据库也是一样的,那应该就是PHP设置问题.那是哪个设置不一样呢?搜索发现,原 ...

最新文章

  1. 线结构光标定详细步骤与实现HALCON
  2. Java学习之if---elif语句
  3. mysql innodb 设置详解_【mysql】mysql innodb 配置详解
  4. 中国石化行业节能减排行业发展动态与运营前景规划展望报告2022年
  5. Java PipedInputStream receive()方法与示例
  6. java pc端软件抓包,如何通过抓包工具fiddler获取java程序的http请求
  7. 10 SD配置-企业结构-分配-给销售组织分配部门(Division)
  8. mysql checkpoint_MySQL checkpoint深入分析
  9. Angr安装与使用之使用篇(十八)
  10. Paper:2020.02.09钟南山团队首篇新冠病毒论文《Clinical characteristics of 2019 novel coronavirus infection in China》
  11. 判断四个点是否在同一个平面上
  12. html 制作人物模型,星际科幻人物模型材质教程 Stargazer Character Design Tutorial
  13. 编个故事,骗700元的稿费真容易啊!
  14. linux下tar命令解压缩,tar解压缩命令 Linux下的tar压缩解压缩命令详解
  15. 超炫的html5擦除效果,超炫html5效果代码(需浏览器支持)
  16. 亚马逊运营知识:亚马逊排名规则是怎么样的
  17. 那个地方,那些刻骨铭心(上)
  18. 干掉 Swagger + Postman?测试接口直接生成API文档,这个国产文档工具真香!
  19. -bash: java: command not found (Linux)
  20. 高德地图Amap开发实践

热门文章

  1. python手机版怎么用-手机使用python操作图片文件(pydroid3)过程详解
  2. python画笑脸-python 利用turtle库绘制笑脸和哭脸的例子
  3. python中文解释-python注释和2版本的中文乱码
  4. python画饼图-从零开始学Python--matplotlib(饼图)
  5. 零基础自学python的app-零基础学Python需要用哪些软件?
  6. python第三方库下载-python 第三方库下载
  7. 初学者学python好还是c-入门是不是应该选择C而不是直接学Python?
  8. python语言培训班-Python语言培训(零基础初级班)
  9. python压缩包怎么安装-python – 如果安装的模块在zip文件的顶层添...
  10. python好学嘛-Python对于没有计算机基础知识的人来说,好学吗?