服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|

CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

2019-06-09 14:33来源:流风,飘然的风所属分类:PHP教程

这篇文章主要介绍了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患,结合实例形式分析了CodeIgniter框架中针对特殊字符的过滤及SQL注入隐患的相关原理,需要的朋友可以参考下

本文实例分析了CI(CodeIgniter)框架中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注入了

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

延伸 · 阅读

精彩推荐
  • PHP教程php使用fullcalendar日历插件详解

    php使用fullcalendar日历插件详解

    这篇文章主要介绍了php使用fullcalendar日历插件的教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    下页、再停留 281 2019-06-04
  • PHP教程PHP微信发送推送消息乱码的解决方法

    PHP微信发送推送消息乱码的解决方法

    今天小编就为大家分享一篇关于PHP微信发送推送消息乱码的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    炫酷飞扬 131 2019-06-07
  • PHP教程浅谈PHPANALYSIS提取关键字

    浅谈PHPANALYSIS提取关键字

    这篇文章主要介绍了PHPANALYSIS如何提取关键字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    瞪眼看太阳 129 2019-06-03
  • PHP教程浅谈php的TS和NTS的区别

    浅谈php的TS和NTS的区别

    这篇文章主要介绍了php的TS和NTS的区别,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    yangzailu 318 2019-06-01
  • PHP教程CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

    CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

    这篇文章主要介绍了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患,结合实例形式分析了CodeIgniter框架中针对特殊字符的过滤及SQL注入隐患的相关原理,需要的朋友可以参考下...

    流风,飘然的风 405 2019-06-09
  • PHP教程PHP implode()函数用法讲解

    PHP implode()函数用法讲解

    今天小编就为大家分享一篇关于PHP implode()函数用法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    php参考手册 148 2019-06-03
  • PHP教程2019年最好用的10个php开发工具推荐

    2019年最好用的10个php开发工具推荐

    对于PHP开发者,在互联网上有很多可用的开发工具,但对于初学者不知道哪个php开发工具比较好,找到一个合适的PHP开发工具是很难的,需要花费很多的时间精力。所以,今天php中文网就为初学者推荐几个2019年最好用的10个php开发...

    PHP中文网 336 2019-06-03
  • PHP教程PHP isset()与empty()的使用区别详解

    PHP isset()与empty()的使用区别详解

    通过对PHP语言的学习,应该知道它是基于函数的一款HTML脚本语言。庞大的函数库支持着PHP语言功能的实现。下面我们为大家介绍有关PHP函数isset()与empty()的相关用法。...

    服务器之家 190 2019-05-28