官方求助thinkphp如何防注入

時間 2021-12-19 08:32:14

1樓:

where方法使用字串條件的時候,支援預處理(安全過濾),並支援兩種方式傳入預處理引數,例如:

$model->>select();

// 或者

$model->>select();

模型的query和execute方法 同樣支援預處理機制,例如:

$model->

//或者

$model->

execute方法用法同query方法。

2樓:php自學

thinkphp 自帶防止注入的函式的

thinkphp怎麼做才是安全的sql防注入

3樓:張愷陽

問題分析:

sql注入大部分情況下都是由於並沒有對使用者提交的資料、url引數等進行過濾,而恰恰在這些未被過濾的引數或資料中存在了sql執行語句,最終導致資料庫的資料被篡改、被匯出等風險。

解決方案:

在thinkphp框架中,不要使用類似$_get或者$_post等php原生的資料獲取方式,可以使用框架提供乙個函式來獲取這些資料及引數。目前較為常用的thinkphp版本有3.2系列以及5.

0系列,他們的方法大同小異,但略有區別,接下來我們分別對這2個系列版本進行實際講解。

1、thinkphp3.2系列版本:

在thinkphp3.2版本中,提供了函式 i 來對資料或者url引數進行過濾及獲取。

舉例如下:

i('get.'); //相當於獲取全部$_get的資料。

i('get.name'); //相當於獲取$_get['name']的資料。

i('post.'); //相當於獲取全部的$_post的資料。

i('post.id'); //相當於獲取$_post['id']的資料。

2、thinkphp5.0系列版本:

在thinkphp5.0版本中,提供了函式input來對資料或者url引數進行過濾及獲取。其使用方法與thinkphp3.2版本中類似。

舉例如下:

input('get.'); //相當於獲取全部$_get的資料。

input('get.name'); //相當於獲取$_get['name']的資料。

input('post.'); //相當於獲取全部的$_post的資料。

input('post.id'); //相當於獲取$_post['id']的資料。

4樓:千鋒教育

thinkphp核心**已經處理過了,你只需要在獲取引數的時候,使用他預設的 i 函式就可以了.

比如 i("post.name") 來獲取 $_post["name"]的值.

另外,sql查詢的時候,where語句盡量使用陣列方式.你可以參考官網手冊中的where

php 關於thinkphp的防sql注入跟過濾問題

5樓:不老山

防止sql注入

opensns

對於web應用來說,sql注入攻擊無疑是首要防範的安全問題,系統底層對於資料安全方面本身進行了很多的處理和相應的防範機制,例如:

$user = m("user"); // 例項化user物件

$user->find($_get["id"]);

即便使用者輸入了一些惡意的id引數,系統也會強制轉換成整型,避免惡意注入。這是因為,系統會對資料進行強制的資料型別檢測,並且對資料**進行資料格式轉換。而且,對於字串型別的資料,thinkphp都會進行escape_string處理(real_escape_string,mysql_escape_string)。

通常的安全隱患在於你的查詢條件使用了字串引數,然後其中一些變數又依賴由客戶端的使用者輸入,要有效的防止sql注入問題,我們建議:

查詢條件盡量使用陣列方式,這是更為安全的方式;

如果不得已必須使用字串查詢條件,使用預處理機制(3.1版本新增特性);

開啟資料字段型別驗證,可以對數值資料型別做強制轉換;(3.1版本開始已經強制進行字段型別驗證了)

使用自動驗證和自動完成機制進行針對應用的自定義過濾;

字段型別檢查、自動驗證和自動完成機制我們在相關部分已經有詳細的描述。

查詢條件預處理

where方法使用字串條件的時候,支援預處理(安全過濾),並支援兩種方式傳入預處理引數,例如:

$model->>select();

或者$model->>select();

模型的query和execute方法 同樣支援預處理機制,例如:

$model->

或者$model->

execute方法用法同query方法。

6樓:親親木朵

用著個過濾傳過來的值,這兩個用之前先判斷是否開啟了get_magic_quotes_gpc();沒有開啟的話用以下兩個都可以過濾

mysql_real_escape_string();一般用於sql語句

addslashes();

例如:if (!get_magic_quotes_gpc()) else

7樓:匿名使用者

get 通過url 傳遞 安全係數 不如post高

thinkphp如何建立model檔案

thinkphp的模型,預設情況是乙個資料表對應乙個model類.建立 model類檔案的方法是 在model資料夾下建立 model.class.php 例如 資料表名稱 test 則在model資料夾下建立類檔案 testmodel.class.php 可以用下面兩種方法去建立乙個資料表mode...

如何部署thinkphp應用,如何用thinkPHP 構建乙個簡單的專案

default module house 預設模組 如何用thinkphp 構建乙個簡單的專案 1 使用sftp協議進行上傳的操作 輸入使用者名稱和使用者密碼。2 使用mkdir命令在 var www下拆家乙個shop目錄。3 網域名稱解析和簡單測試。4 建立乙個shop資料庫。5 使用資料庫 匯入...

官方qzone如何取消關注,官方Qzone如何取消關注

在右上角有乙個小差號,把滑鼠放在上邊就會彈出乙個 取消關注 單擊就搞定了。qq空間取消官方qzone動態 進入qq空間,選擇左側 認證空間 進入 認證空間 選擇 我的關注 找到qq空間官方qzone,在其動態底部找到 省略號 圖示,點選,選擇 取消關注 以後都不會收到其動態了。動態後面的 x 隱藏此...

thinkphp如何給網頁加公共的header檔案和footer檔案

騎王子特斯拉 在thinkphp的手冊的模板裡面有模板繼承,模板繼承的優勢其實是設計基礎模板中的區塊 block 和子模板中替換這些區塊 具體如下 標題 block標籤必須指定name屬性來標識當前區塊的名稱,這個標識在當前模板中應該是唯一的,block標籤中可以包含任何模板內容,包括其他標籤和變數...

PSP1000官方6 20如何降級

我很可惜的告訴你,現在6.20的系統沒法降級,因為沒有相關神電神卡。不過你不要太洩氣,我有乙個最不應該說的方法,我想這是最後的方法,就是把你的機子變磚,我知道這個太殘忍,但是6.20真的沒法降級,但是機子變磚可以從新刷系統,就可以刷低版本的系統了。幸虧你的是1000,變磚沒事,要是2000v3或30...