這篇文章主要介紹CI核心框架工具類CI_Security。
安全類包含了一些方法,用於安全的處理輸入數據,幫助你建立一個安全的應用。如下選取類中的重點方法進行說明。php
在構造函數中,取出配置中csrf_expire,csrf_token_name,csrf_cookie_name的值,賦給類成員變量。接着,設置$this->_csrf_hash
的值。若是cookie中存在csrf_cookie_name變量,則將值賦給$this->_csrf_hash,若是不存在,則利用一個算法生成新的值。html
該函數對用戶的輸入進行xss的過濾和 清理,若是$is_image設置爲true,還能對圖片進行過濾。細節我沒有多看,固然它用到了不少過濾條件和方法。
若是你想過濾帶有html標籤的輸入,能夠使用 common.php中的html_escape()
函數,參考。算法
基本原理,是運用POST中的名爲csrf_token_name表單值發送服務器,與cookie中的csrf_cookie_name(以前已經設置過的)值進行比較, 若是相同則經過,若是不一樣則說明是csrf攻擊。它利用的是cookie值通常不能被竊取的原理。能夠參考這篇文章https://codeigniter.org.cn/forums/thread-19849-1-1.html,講解的很是詳細。安全