千家信息网

CI框架中URL特殊字符处理与SQL注入隐患的示例分析

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,这篇文章将为大家详细讲解有关CI框架中URL特殊字符处理与SQL注入隐患的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:php CI框架中URL特
千家信息网最后更新 2024年11月21日CI框架中URL特殊字符处理与SQL注入隐患的示例分析

这篇文章将为大家详细讲解有关CI框架中URL特殊字符处理与SQL注入隐患的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体如下:

php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分类,字符都无法正常显示很头痛,而在配置里增加单引号' 反斜杠\ 这种特殊字符又很容易给sql注入

在默认的config配置基础上加上:+=()特殊字符

#$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';$config['permitted_uri_chars'] ='a-z 0-9~%.:_\-\+=()';

在CI框架中,尽量使用AR类进行数据库查询是比较靠谱的,因为在底层会帮助使用者进行一次有效的转义,但也仅仅是转义而已。

过滤的方法是escape_str()

function escape_str($str, $like = FALSE){  var_dump($str);  echo "\n" ;  if (is_array($str))  {    foreach ($str as $key => $val)    {      $str[$key] = escape_str($val, $like);    }    return $str;  }  if (function_exists('mysql_real_escape_string'))  {    $str = addslashes($str);  }  elseif (function_exists('mysql_escape_string'))  {    $str = mysql_escape_string($str);  }  else  {    $str = addslashes($str);  }  // escape LIKE condition wildcards  if ($like === TRUE)  {    $str = str_replace(array('%', '_'), array('\\%', '\\_'), $str);  }  return $str;}

该方法仅仅是调用了一些转义函数,并对like参数进行过滤。

如果查询的变量没有被单引号包裹,那么就无法进行保护

ci 框架默认的过滤函数是escape :

xx". $this->db->escape ( $xxx )."xx

由于数组的$key过滤不严直接带入SQL查询的漏洞屡见不鲜:

$arr = array(  'name'=>"2' and 1=2",  "hello'"=>"2"););

输出结果:

Array(
[name] => 2\' and 1=2
[hello' union select ] => 2
)

如果真实sql语句传入上面两个参数合并起来就可以查询出所有信息了,属于sql注入了

关于"CI框架中URL特殊字符处理与SQL注入隐患的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0