Sql 注入問題總結

2021-07-11 19:45:51 字數 1069 閱讀 6181

所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。

示例一:惡意sql 命令:

// 設定$name 中插入了我們不需要的sql語句

$name = "qadir'; delete from users;";

mysql_query("select * from users where name=''");

//說明:以上的注入語句中,我們沒有對 $name 的變數進行過濾,$name 中插入了我們不需要的sql語句,將刪除 users 表中的所有資料。

示例二:like語句中的注入

like查詢時,如果使用者輸入的值有」「和」%」,則會出現這種情況:使用者本來只是想查詢」abcd「,查詢結果中卻有」abcd_」、」abcde」、」abcdf」等等;使用者要查詢」30%」(注:百分之三十)時也會出現問題。

1.永遠不要信任使用者的輸入。對使用者的輸入進行校驗,可以通過正規表示式,或限制長度;對單引號和 雙」-「進行轉換等。

示例: 使用正規表示式對使用者輸入進行校驗

if (preg_match("/^\w$/", $_get['username'], $matches))

else

2.永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢訪問。

示例:在jdbc中使用preparedstatement而不是statement 運算元據庫

3.永遠不要使用管理員許可權的資料庫連線,為每個應用使用單獨的許可權有限的資料庫連線。

4.不要把機密資訊直接存放,加密或者hash掉密碼和敏感的資訊。

6.sql注入的檢測方法一般採取輔助軟體或**平台來檢測,軟體一般採用sql注入檢測工具jsky,**平台就有億思**安全平台檢測工具。mdcsoft scan等。採用mdcsoft-ips可以有效的防禦sql注入,xss攻擊等。

SQL注入問題總結

sql注入就是將原本的sql語句的邏輯結構改變,使得sql語句的執行結果和原本開發者的意圖不一樣 方法 在表單中將命令當作使用者輸入提交給程式 這裡我們根據使用者登入頁面 預先建立乙個表 create table user table id int primary key,username varc...

SQL注入總結

在大部分語言中都一樣是注釋。這個之中的語句是不被執行的。但mysql中 為了保持相容,比如從mysqldump 匯出的sql語句能被其它資料庫直接使用,它把一些特有的僅在mysql上的語句放在 中,這樣這些語句如果在其他資料庫中是不會被執行,但在mysql中它會執行。僅當mysql的版本等於或高於指...

sql注入總結

第一天 url 統一資源定位符 協議 主機號 目錄 注釋符 20 代表空格 order by 15 閉合條件為 猜測列數 union all select 1,2,3 猜測顯示位 select schema name from information schema.schemata 查庫名 sele...