加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php魔术引号使用分析

发布时间:2020-05-30 18:57:29 所属栏目:PHP 来源:互联网
导读:php 魔术引号(Magic Quote)是一个自动将进入 PHP 脚本的数据进行转义的过程,本文章向大家介绍php魔术引号使用方法以及使用过程中需要注意哪些方面,需要的朋友可以参考一下。

PHP之安全在于其默认配置php.ini-dist中具备一个magic_quotes_gpc = On的东西,叫“魔术引号(Magic Quote)”,对PHP初学者很有用,“尽管SQL注入在魔术引号打开的情况下仍然有可能实现,但起码系统的风险减少很多了”(PHP手册)。但是对于 PHP代码的移植性却造成了影响,而且并不是每一个被魔术引号转义的数据都需要写入数据库,这样就对程序的执行效率造成了影响,倒不如使用 addslashes(),所以在


php.ini-recommended中magic_quotes_gpc = Off。

这里用一段函数来判断是否打开了magic_quotes_gpc,然后确定是否需要addslashes(),当然,这样做可能效率会受到影响。


PHP系统配置文件php.ini中有三个魔术引号配置选项:

魔术引号配置选项

描述

运行时改变

PHP中的默认值

magic_quotes_gpc

如果打开的话,影响 到 HTTP 请求数据(GET,POST 和 COOKIE)。

NO

On

magic_quotes_runtime

如果打开的话,大部 份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。(前提是magic_quotes_gpc = On)

YES

Off

magic_quotes_sybase

当关闭时,所有的 (单引号),"(双引号),(反斜线)和 NULL 字符都会被自动加上一个反斜线进行转义。这和 addslashes() 作用完全相同。


如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 。而双引号、反斜线 和 NULL 字符将不会进行转义。


(前提是magic_quotes_gpc = On)

YES

Off

从上表可以看出,对于magic_quotes_runtime,在程序中用 ini_set(magic_quotes_runtime,0);就可以把它关掉,然后可以用自己的方法来处理来自数据库或文件的数据。

但是要处理外部传来的全局变量就比较麻烦了。下面的代码可供使用,这里将屏蔽magic_quotes_sybase,只是将引号之类的东西前面加上反斜线(),用于提交给MySql数据库。

if (is_null($_GET["search"])) {

echo '

echo '

echo ' Search:';

echo ' ';

echo ' ';

echo ' ';

echo '

';

} else {

$search = $_GET["search"];

if (!get_magic_quotes_gpc( )) {

$search = htmlentities($search);

}

if ($search != NULL ){

echo "The search string is: $search.";

}

}

?>

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读