来源:自学PHP网 时间:2015-04-17 12:00 作者: 阅读:次
[导读] PHP中的魔术引号相信很多人都不陌生了,之前被认为是防御SQL注入以及XSS的一个方法。但是PHP官方决定移除这一特性,理由是因为这一特性对于安全的提升帮助不大,并且十分影响PHP执...
PHP中的魔术引号相信很多人都不陌生了,之前被认为是防御SQL注入以及XSS的一个方法。但是PHP官方决定移除这一特性,理由是因为这一特性对于安全的提升帮助不大,并且十分影响PHP执行的效率,因此决定移除这一特性。
在PHP配置文件中,只要更改magic_quotes_gpc这一选项就可以开启这一特性。它的作用是转义输入输出中的单引号(‘),双引号(“)以及反斜杠(\)。除了magic_quotes_gpc这一选项之外,还有其他几个关于魔术引号的选项: 1 ; Magic quotes 2 ; 3 4 ; Magic quotes for incoming GET/POST/Cookie data. 5 magic_quotes_gpc = Off 6 7 ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. 8 magic_quotes_runtime = Off 9 10 ; Use Sybase-style magic quotes (escape ' with '' instead of \'). 11 magic_quotes_sybase = Off 在PHP官方说明中,是这样说的,将在PHP 5.3中默认关闭这一选项,在PHP 5.4中会完全移除这一选项。我个人认为也是非常支持这一做法的,因为无数事实证明了这一转义对于想要防御的Web攻击并不是十分有效,反而影响了效率。 但是这一改变也将伴随着一场危机,很多运行在老版本的PHP的Web系统,对于魔术引号是有一定的依赖性的,之前也见过不少在magic_quotes_gpc为off的情况下才能成功利用的漏洞。目前大部分在线系统都没有大规模地升级到PHP的5.4版本。因此问题的严重性没有暴露出来,并且很多人对于Magic Quotes特性的移除也并不太之情。如果对于这一特性没有提前预防,很有可能在5.4普及以后,会出现某些系统上的又一轮XSS或者MYSQL漏洞等。 附上官方的原文解释 • Portability Assuming it to be on, or off, affects portability. Use get_magic_quotes_gpc() to check for this, and code accordingly. • Performance Because not every piece of escaped data is inserted into a database, there is a performance loss for escaping all this data. Simply calling on the escaping functions (like addslashes()) at runtime is more efficient. Although php.ini-development enables these directives by default, php.ini-production disables it. This recommendation is mainly due to performance reasons. • Inconvenience Because not all data needs escaping, it’s often annoying to see escaped data where it shouldn’t be. For example, emailing from a form, and seeing a bunch of \’ within the email. To fix, this may require excessive use of stripslashes(). |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com