如果您通過網頁獲取使用者輸入的資料並將其插入乙個mysql資料庫,那麼就有可能發生sql注入安全的問題。
本章節將為大家介紹如何防止sql注入,並通過指令碼來過濾sql中注入的字元。
所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。
我們永遠不要信任使用者的輸入,我們必須認定使用者輸入的資料都是不安全的,我們都需要對使用者輸入的資料進行過濾處理。
以下例項中,輸入的使用者名稱必須為字母、數字及下劃線的組合,且使用者名稱長度為 8 到 20 個字元之間:
if (preg_match("/^\w$/", $_get['username'], $matches))
else
讓我們看下在沒有過濾特殊字元時,出現的sql情況:
// 設定$name 中插入了我們不需要的sql語句
$name = "qadir'; delete from users;";
mysqli_query($conn, "select * from users where name=''");
以上的注入語句中,我們沒有對 nam
e的變數
進行過濾
,name 的變數進行過濾,
name的變
量進行過
濾,name 中插入了我們不需要的sql語句,將刪除 users 表中的所有資料。
在php中的 mysqli_query() 是不允許執行多個 sql 語句的,但是在 sqlite 和 postgresql 是可以同時執行多條sql語句的,所以我們對這些使用者的資料需要進行嚴格的驗證。
防止sql注入,我們需要注意以下幾個要點:
關於資料庫的sql注入先寫到這裡,預知後事如何,且聽下回分解
mysql資料庫sql注入原理 SQL注入原理
結構化查詢語句 structured query language,縮寫 sql 是一種特殊的程式語言,用於資料庫中的標準資料查詢語言。sql注入 sql injection 是一種常見的web安全漏洞,攻擊者利用這個問題,可以訪問或者修改資料,或者利用潛在的資料庫漏洞進行攻擊。什麼是sql注入?s...
SQL注入原理 手工注入access資料庫
一 target sql注入原理 學習手工注入過程 二 實驗原理 通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的的查詢字串,最終達到欺騙伺服器執行惡意的sql命令 1 在結尾的鏈結中依次新增 和 and 1 1 和 and 1 2 判斷 是否存在注入點 2 新增語句 and exis...
SQL注入原理 手工注入access資料庫
sql注入原理 手工注入access資料庫 sql注入是通過將sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意sql指令的目的。1.判斷 是否有注入點。在以asp?id xx 任意數字 結尾的連線依次新增 若以上結果顯示 資料庫出錯 正常顯示 資料庫出錯 ...