SQL隱碼攻擊問題
sql注入
如果SQL當中,存在瀏覽器端請求的資料(使用者資料),使用者通過特殊的形式,對我們的sql語句產生影響,稱為sql注入(SQL Injection)。
$sql = "SELECT * FROM `p34_admin` WHERE admin_name='$admin_name' and admin_pass=md5('$admin_pass')";
例如上面的語句中,讓admin_name=’or 1 or’,那麼WHERE表示式恆成立。
tip:不僅在登入時,可以被注入,任何使用者資料參與執行,都可以被注入。
預防
- 業務邏輯上預防(使用白名單,將使用者資料限制在合理範圍之內):
- 通過限定資料格式(比如使用者名稱僅由字母、數字、下劃線和特定字元組成),如果檢測不安組要求,則直接不予參與SQL隱碼攻擊問題。
- 通過限定數型別(比如,ID需要整形的資料,將使用者床底請求資料強制轉化成整型),進行避免。比如防止(DELETE FROM match where m_id=$_GET[‘m_id’]變為$GET[‘m_id’]=’5 or 1’#)。可以在後者前面加上(int)進行強制轉換。
- 通過特殊資料轉義
- 通過函式:PHP字串函式addslashes(),Mysql提供的轉義函式:mysql_real_escape_string(待轉義字串,連線)。
tip:PHP中魔術引號(magic quotes),PHP中自動為請求資料(GET,POST)增加轉義的一種防止SQL隱碼攻擊機制。
本文示例程式碼:
dao層:
class MySQLDB{
/**
* avoid SQL Injection
* @param $data string
* @return string
*/
public function escapeString($data) {
return "'" . mysql_real_escape_string($data, $this->resourc) . "'";
}
}
model程式碼:
class AdminModel{
public function check($admin_name, $admin_pass) {
//method1
//$admin_name = addslashes($admin_name);
//$admin_psss = addslashes($admin_pass);
//method2
$admin_name_escape = $this->_dao->escapeString($admin_name);
$admin_pass_escape = $this->_dao->escapeString($admin_pass);
$sql = "SELECT * FROM `p34_admin` WHERE admin_name=$admin_name_escape
and admin_pass=md5($admin_pass_escape)";
$row = $this->_dao->getRow($sql);
return (bool)$row;
}
}
相關文章
- SQL隱碼攻擊問題以及解決方法SQL
- SQL隱碼攻擊SQL
- SQL隱碼攻擊方法SQL
- SQL隱碼攻擊(pikachu)SQL
- MYSQL SQL隱碼攻擊MySql
- SQL隱碼攻擊原理是什麼?如何防範SQL隱碼攻擊?SQL
- SQL隱碼攻擊總結SQL
- pikachu-SQL隱碼攻擊SQL
- XSS與SQL隱碼攻擊SQL
- SQL隱碼攻擊導圖SQL
- SQL隱碼攻擊語句SQL
- DVWA-SQL Injection(SQL隱碼攻擊)SQL
- 【網路安全】什麼是SQL隱碼攻擊漏洞?SQL隱碼攻擊的特點!SQL
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- Nacos Derby SQL隱碼攻擊漏洞SQL
- MSSQL SQL隱碼攻擊 總結SQL
- Oracle SQL隱碼攻擊 總結OracleSQL
- SQL隱碼攻擊關聯分析SQL
- Mybatis如何防止SQL隱碼攻擊MyBatisSQL
- SQL隱碼攻擊基礎原理SQL
- SQL隱碼攻擊-堆疊注入SQL
- 【網路安全入門】SQL隱碼攻擊是什麼?SQL隱碼攻擊危害有哪些?SQL
- 前端如何預防SQL隱碼攻擊?前端SQL
- SQL隱碼攻擊——時間盲注SQL
- SQL隱碼攻擊基礎入門SQL
- Mura CMS processAsyncObject SQL隱碼攻擊漏洞ObjectSQL
- SQL隱碼攻擊:Sqlmap初體驗SQL
- SQL隱碼攻擊速查表(上)SQL
- 預防SQL隱碼攻擊筆記SQL筆記
- SQL隱碼攻擊及如何解決SQL
- 什麼是SQL隱碼攻擊(SQLi)SQL
- SQL隱碼攻擊讀寫檔案SQL
- CTF-Web26(涉及SQL隱碼攻擊--基礎題)WebSQL
- WEB三大攻擊之—SQL隱碼攻擊與防護WebSQL
- MySQL JDBC常用知識,封裝工具類,時區問題配置,SQL隱碼攻擊問題MySqlJDBC封裝
- SQL隱碼攻擊原理及程式碼分析(二)SQL
- SQL隱碼攻擊原理及程式碼分析(一)SQL
- SQL隱碼攻擊原理——萬能密碼注入SQL密碼