1.如何理解SQL注入?
SQL注入是一種將SQL代碼添加到輸入參數中,傳遞到SQL服務器解析並執行的一種攻擊手法。mysql
2.SQL注入是如何產生的?
web開發人員沒法保證全部的輸入都已通過濾。
攻擊者利用發送給SQL服務器的輸入數據構造可執行的SQL代碼
數據庫未作相應的安全配置。web
3.如何尋找SQL注入漏洞?
藉助邏輯推理:
識別web應用中全部輸入點。
瞭解哪些類型的請求會觸發異常。(get特殊字符‘ 「)
檢測服務器響應中的異常。sql
4.如何進行SQL注入攻擊?
數字注入。
(1)select * from name where id=-1 OR 1=1; 這樣就會查詢全表。
字符串注入。
(1)SQL,#後面會被註釋掉的
select * from name= 'llsydn'#' and password = "123456";
(2)SQL,--後面會被註釋掉的
select * from name= 'llsydn'--' and password = "123456";數據庫
5.如何預防SQL注入?
嚴格檢查輸入變量的類型和格式。
過濾和轉義特殊字符。
利用mysql的預編譯機制。安全
1.MySQL事務隔離級別。
SERIALIZABLE; REPEATABLE READ; READ COMITTED; READ UNCOMMITTED
序列化; 可重複讀; 提交讀; 未提交讀服務器
(1)serializable,最高級別,當別操做未提交時,不能操做數據庫。性能
(2)repeatable read,可重複讀。(默認的隔離級別)
出現幻讀的狀況,A事務插入數據insert,並提交commit。B事務查詢select,並更新update數據的時候,並提交commit,B查詢會出現幻讀,即會顯示A事務插入的數據。spa
(3)read committed,提交讀。A事務更新update數據,並提交commit。B事務中均可以讀取到被更新的數據。(即出現了不可重複讀)事務
(4)read uncommitted,未提交讀。A事務更新update數據,未提交。B事務中均可以讀取到被更新的數據。(A事務,回滾rollback了,則會出現髒讀)開發
2.MySQL性能與非事務表的表鎖定。 支持事務的數據庫在保持不一樣用戶彼此隔離方面要比非事務數據庫複雜,所以天然 反映在系統的性能上面。 在使用事務表時,提升性能的一些方法: (1)使用小事務。 (2)選擇合適的隔離級別。 (3)保證開始事務前一切都是可行的。 (4)避免死鎖。