> 백엔드 개발 > PHP 튜토리얼 > 这样能做到防注入?

这样能做到防注入?

WBOY
풀어 주다: 2016-06-23 14:23:48
원래의
1144명이 탐색했습니다.

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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿