这样能做到防注入?

学习php 2013-10-11 10:35:01

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'");
....以下代码省略
?>


能做到防注入吗
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iasky 2013-10-11
  • 打赏
  • 举报
回复
单引号等,可以考虑使用mysql等自己的函数转换
学习php 2013-10-11
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
不能! 你没有对特殊字符 ' 做任何处理

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);
}
再加两行代码 这样是否可以做到呢
xuzuning 2013-10-11
  • 打赏
  • 举报
回复
不能! 你没有对特殊字符 ' 做任何处理

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧