这样能做到防注入?

WBOY
发布: 2016-06-23 14:23:48
原创
1085 人浏览过

function defend_xss($val){	return is_array($val) ? $val : htmlspecialchars($val);}function gpc($name,$w = 'GPC',$default = '',$d_xss=1){	global $curr_script;	if($curr_script==ADMINCP){		$d_xss = 0;	}	$i = 0;	for($i = 0; $i < strlen($w); $i++) {		if($w[$i] == 'G' && isset($_GET[$name])) return $d_xss ? defend_xss($_GET[$name]) : $_GET[$name];		if($w[$i] == 'P' && isset($_POST[$name])) return $d_xss ? defend_xss($_POST[$name]) : $_POST[$name];		if($w[$i] == 'C' && isset($_COOKIE[$name])) return $d_xss ? defend_xss($_COOKIE[$name]) : $_COOKIE[$name];	}	return $default;}
登录后复制


<?php$test = gpc('test','P','')$userid = @$db->result_first("select userid from user where username='$test'");....以下代码省略?>
登录后复制


能做到防注入吗


回复讨论(解决方案)

不能!
你没有对特殊字符 ' 做任何处理

不能!
你没有对特殊字符 ' 做任何处理

function addslashes_array(&$array) {	if(is_array($array)){		foreach($array as $k => $v) {			$array[$k] = addslashes_array($v);		}	}elseif(is_string($array)){		$array = addslashes($array);	}	return $array;}
登录后复制

if(!@get_magic_quotes_gpc()){	$_GET = addslashes_array($_GET);	$_POST = addslashes_array($_POST);	$_COOKIE = addslashes_array($_COOKIE);}
登录后复制


再加两行代码 这样是否可以做到呢

单引号等,可以考虑使用mysql等自己的函数转换

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!