1.對使用者登入進行驗時的
sql寫成
$name = $_post[『name』];
$password = $_post[『password』];
$query = 「select * from t_user where name=』$name』 and password=』$password』 」;
可注入方式:
(1)萬能密碼:xx』 and 1=1
(2)萬能使用者名稱 xx』 union select * from t_user/*
其中/*
在sql
語句中表示之後的字元都不要管了,只用
/*之前的字元作為
sql語句進行查詢。
防範(1)伺服器配置。php.ini
檔案中magic_quote_gpc=on ,即對所有的 get
、post
和 cookie
資料自動執行 addslashes(),即對資料中某些特殊字元加\進行轉義,如單雙引號\
反斜線與
null
(2)密碼對比。即根據使用者名稱在資料庫中取出密碼再同$password
進行對比。
$query = 「select password from t_user where name=』$name』 」;
(3)pdo的預處理
$pdohandle = new pdo(「mysql:host=localhost;port=3306; dbname=test」, 「username」, 「password」);
$pdohandle->exec(「set names utf8」);
$pdostatment = $pdohandle->prepare(「select * from t_user where name=? and password=? 」);
pdostament->execute(array($name, $password));
$result = pdostament->fetch();
2.php搜尋此擎中的
sql注入問題
如寫成:
$key = $_post[『key』];
$query = 「select * from t_product where name like 『%$key%』」;
可注入方式:
(1)使用者輸入的關鍵字是%
或___
等sql
的萬用字元就可以查到所有資訊了。、
防範:1對
$key
進行特殊字元過慮。
$key = addslashes($key),即某些特殊字元加\進行轉義,如單雙引號、反斜線與
null。
$key = preg_replace(『/%/』, 『\%』, $key); 對萬用字元
%進行替換
$key = preg_replace(『/_/』, 『\_』, $key); 對萬用字元
_進行替換
防範sql注入
真沒語言了,公司的 都有這個漏洞,明天趕緊把改了 sql注入式攻擊是利用是指利用設計上的漏洞,在目標伺服器上執行sql命令以及進行其他方式的攻擊 動態生成sql命令時沒有對使用者輸入的資料進行驗證是sql注入攻擊得逞的主要原因。比如 如果你的查詢語句是select from admin where ...
sql 注入防範
關於身份驗證 sql select from user where name name and pwd pwd 假設只知道使用者名稱不知道密碼 1 我們在使用者名稱位置輸入 admin or 1 1 注 內容只有 內的。看看sql會變成什麼 sql select from user where na...
MySQL 及 SQL 注入與防範方法
所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。我們永遠不要信任使用者的輸入,我們必須認定使用者輸入的資料都是不安全的,我們都需要對使用者輸入的資料進行過濾處理。1.以下例項中,輸入的使用者名稱必須為字母 數字及下劃...