Heim  >  Artikel  >  Backend-Entwicklung  >  这样能做到防注入?

这样能做到防注入?

WBOY
WBOYOriginal
2016-06-23 14:23:481086Durchsuche

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等自己的函数转换

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn