欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php5.3中的safe

程序员文章站 2022-05-16 11:54:44
...

今天重启nginx的时候,发现出现这样子的错误 PHP Warning: Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0 PHP Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0 Unkn

今天重启nginx的时候,发现出现这样子的错误

PHP Warning: Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
PHP Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0

Unknown on line 0

官方看了下,用红色的block特别注明了,php5.3已经不推荐使用这个东东了,在 PHP6 中已经将其废弃:

magic_quotes_gpc boolean
Warning
This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.

magic_quotes_gpc=on 的配置下,插入数据时,Magic quotes 会自动将数据转义。 可以从一定程度上,让初学者带离脚本的安全风险。例如在没有任何保护措施的代码下,开启了 Magic quotes 后会少很多的风险,例如注入问题。以前看一些安全方面的文章,入侵者总是喜欢选择magic_quotes_gpc=off的站下手,如果看到其magic_quotes_gpc=on ,估计就不会弄这个站了。
那么官方为什么要废除这个东东呢?搜索了一下,看到一个写得相当详细和全面的帖子,下面将其中提到的几个原因帖出:
为什么不使用 Magic quotes

可移植性
无论此功能是否开启,它都会影响脚本的可移植性,因为它影响我们后续过滤数据的操作。

性能问题
在获取所有的外部数据之前都会被转义,这无疑会增加运行时的花销(而且并不是所有的数据都需要转义)。

造成困惑
正如上述所言,并非所有的数据都需要被转义。有可能出现的一种情况,就是当你为了获取未被转义的数据,而“疯狂的”使用 stripslashes 函数。