ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与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相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

您可能感兴趣的文章:浅谈php(codeigniter)安全性注意事项

CodeIgniter安全相关设置汇总

CodeIgniter框架过滤HTML危险代码

CodeIgniter删除和设置Cookie的方法

Codeigniter实现处理用户登录验证后的URL跳转

CodeIgniter框架URL路由总结

解析如何去掉CodeIgniter URL中的index.php

CodeIgniter针对lighttpd服务器URL重写的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

es6判断对象key是否存在,ES6中获取对象的key

ES6中获取对象的keyconst json {‘a‘: 123, ‘b‘: 321};Object.keys(json).forEach(key > {window.console.log(key);}); // [a,b]ES6一共有五种方法可以遍历对象的属性。for ... in:循环遍历对象自身的和继承的可枚举的属性(不包含Symbol属性)Object.keys(ob…

招投标体统JAVA源代码,JSP 招投标管理系统(毕业设计)源码

一、源码特点JSP 招投标管理系统 是一套完善的毕业设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。二、功能介绍主要功能:(1)权限管理:对权限信息进行添加、删除、…

java+timer+退出,java timer 兑现在指定时间执行方法

java timer 实现在指定时间执行方法最近在弄一个定时发送的项目,需要定时执行方法,于是用到了Timer,但是我想要的功能网络上的资源比较少,所以自己研究了一下。下面是我写的一些代码import java.util.Calendar;import java.util.D…

linux下安装mysql5.7.19,Linux下MySQL5.1升级到高版本MySQL5.7.19详解 | zifangsky的个人博客...

一 数据备份(1)查看当前版本:Shell[rootcentos ~]# mysql -V1[rootcentos~]# mysql -V(2)备份数据:Shell[rootcentos ~]# mysqldump -u root -h 127.0.0.1 -P 3306 -p --all-databases > databases.sql1[rootcentos~]# mysqldump -u root -h 127.0.0.…

mysql event使用,用MySQL的Event设置定时任务执行sql语句 | 老疯子

想在每天某个特定时间段定时执行一条sql语句命令,来进行数据库的备份或者更新删除等,可以直接使用MySQL自带的定时任务Event事件来执行操作。需要注意的是Event事件是在MySQL 5.1版本中新增的,还有一点就是确保你有MySQL数据库的root管理权限…

php如何配置微信公众号环境,微信公众平台开发之配置与请求

一、配置参数define(WEIXIN_APPID, wxzzzzzzzz);define(WEIXIN_APPSECRET, ouewjdsaudsamkh);define(WEIXIN_TOKEN, 9973833232232);define(WEIXIN_NOTIFY_URL, http://xx.com/xx/xx);define(WEIXIN_MCHID, 322221121);define(WEIXIN_KEY, xddsdswewew);1)微信公众号开发中IDWE…

MATLAB设置x为0到10所有数,MATLAB教学_10数值微积分

本文学习视频地址:https://www.bilibili.com/video/av68228488?p10课堂PPT以及本人学习代码已上传。本文学习内容:多项式的微分和积分数值的微分和积分目录多项式的表示方法polyval()polyder()16分钟练习conv()polyint()Numerical Differentiation39分钟…

php header 404 nginx,ThinkPHP在nginx下怎么设置?路由统统404,疯了~

本地用MAMP跑的代码,运行没问题。但是部署到CENTOS 6.8 NGINX服务器上的时候,路由地址都404了![可以访问] http://something.com/API/public/index.php[404] http://something.com/API/public/index.php/consult_add折腾一晚上了。。简直了&a…

vue怎么使用php调取数据,vue 数据操作

pushpopshiftunshiftsplicesortreverse{{ item.message }} #var example new Vue({el: #example,data: {items: [{message: Foo },{message: Bar },{message: Baz }],addValue:{message:match}},methods:{push(){//接收任意数量的参数,把它们逐个添加到数组末尾&am…

php strchr 截断,PHP strchr() 函数

w3school 教程PHP String 函数查找 "world" 在 "Hello world!" 中的第一次超并返回此字符串的其余个别:echo strchr("Hello world!","world");?>运行实例strchr() 函数搜他串在另一字符串中的第一次常该函数是 strstr(…

matlab与专业应用,MATLAB应用技术--在电气工程与自动化专业中的应用

第1章 MATLAB基本知识.1.1 MATLAB简介1.1.1 概述1.1.2 MATLAB安装与运行1.2 MATLAB的基本操作1.2.1 MATLAB语言结构1.2.2 MATLAB常用命令1.2.3 MATLAB的M文件1.2.4 输入与输出函数1.3 MATLAB的矩阵运算1.3.1 矩阵的实现1.3.2 矩阵的运算1.4 MATLAB的向量运算1.5 MATLAB的控制语…

php 单一职责原则,Laravel深入学习8 - 单一责任原则

声明:本文并非博主原创,而是来自对《Laravel 4 From Apprentice to Artisan》阅读的翻译和理解,当然也不是原汁原味的翻译,能保证90%的原汁性,另外因为是理解翻译,肯定会有错误的地方,欢迎指正。…

matlab aic sic,sic是什么意思_sic的翻译_音标_读音_用法_例句_爱词霸在线词典

全部In the mud -- En ange e il mondo ! [ sic ] ( 6 )污泥里 —— Efangoeilmondo! ( 六 )汉英文学 - 围城Fixed - seal & rotational - seal are made of various msterials, SIC, Carbon, Ceramic and can withstand various chemicals.固定环 及 转动环由各种不同材质…

centos6.3 nginx php,CentOS 6.3下nginx、php-fpm、drupal快速部署

一切本着从简原则来做,能yum/rpm的,坚决不手工编译 :)本次部署环境基于CentOS 6.3 x86_64系统。0. 准备工作#更新yum[rootimysql ~]# yum -y update[rootimysql ~]# yum install libaio-devel.x86_64#drupal 8.0需要用到curl模块[rootimysql ~]# yum ins…

链路追踪php,easyswoole链路追踪

TrackerEasyswoole提供了一个基础的追踪组件,方便用户实现基础的服务器状态监控,与调用链记录。组件要求php: >7.1.0ext-swoole: ^4.4.0easyswoole/component: ^2.0安装方法composer require easyswoole/tracker仓库地址调用链Easyswoole的调用链跟踪…

razor java,如何在Razor中声明局部变量?

我正在asp.net mvc 3中开发一个Web应用程序。我对它很新。 在使用剃刀的视图中,我想声明一些局部变量并在整个页面中使用它。 如何才能做到这一点?能够执行以下操作似乎相当微不足道:bool isUserConnected string.IsNullOrEmpty(Model.Creat…

amp 符号 php,php中引用符号(amp;)的使用详解_PHP教程

与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址变量的引用.PHP 的引用允许你用两个变量来指向同一个内容复制代码 代码如下:$a"ABC";$b &$a;echo $a;//这里输出:ABCecho $b;//这里输出:ABC…

oracle ora 00283,【案例】Oracle报错ORA-16433非归档丢失redo无法启动的恢复过程

天萃荷净Oracle研究中心案例分析:运维DBA反映Oracle数据库处理非归档模式,redo文件损坏常规修复无法正常open数据库。本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客本文链接地址…

win7卸载oracle12c,Windows7上完全卸载Oracle 12c操作步骤

Windows7上完全卸载Oracle 12c操作步骤1.关闭Oracle所有的服务,按【winR】运行【services.msc】找到所有Oracle开头的服务(OracleVssWriterORCLOracleServiceORCLOracleOraDB12Home1TNSListenerOracleOraDB12Home1MTSRecoveryServiceOracleJobSchedulerORCL),点击停止。2.使用O…