sql注入及防範

2021-06-17 17:40:39 字數 1479 閱讀 7835

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.以下例項中,輸入的使用者名稱必須為字母 數字及下劃...