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.pswp.cn/news/530526.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530526.shtml
英文地址,請注明出處:http://en.pswp.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…