(一)SQL注入。
1.如何理解SQL注入?
SQL注入是一種將SQL代碼添加到輸入參數中,傳遞到SQL服務器解析并執行的一種攻擊手法。
2.SQL注入是如何產生的?
web開發人員無法保證所有的輸入都已經過濾。
攻擊者利用發送給SQL服務器的輸入數據構造可執行的SQL代碼
數據庫未做相應的安全配置。
3.如何尋找SQL注入漏洞?
借助邏輯推理:
識別web應用中所有輸入點。
了解哪些類型的請求會觸發異常。(get特殊字符‘ “)
檢測服務器響應中的異常。
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的預編譯機制。
(二)MySQL隔離級別
1.MySQL事務隔離級別。
SERIALIZABLE; REPEATABLE READ; READ COMITTED; READ UNCOMMITTED
序列化; 可重復讀; 提交讀; 未提交讀
(1)serializable,最高級別,當別操作未提交時,不能操作數據庫。
(2)repeatable read,可重復讀。(默認的隔離級別)
出現幻讀的情況,A事務插入數據insert,并提交commit。B事務查詢select,并更新update數據的時候,并提交commit,B查詢會出現幻讀,即會顯示A事務插入的數據。
(3)read committed,提交讀。A事務更新update數據,并提交commit。B事務中都可以讀取到被更新的數據。(即出現了不可重復讀)
(4)read uncommitted,未提交讀。A事務更新update數據,未提交。B事務中都可以讀取到被更新的數據。(A事務,回滾rollback了,則會出現臟讀)
2.MySQL性能與非事務表的表鎖定。
支持事務的數據庫在保持不同用戶彼此隔離方面要比非事務數據庫復雜,因此自然
反映在系統的性能上面。
在使用事務表時,提高性能的一些方法:
(1)使用小事務。
(2)選擇合適的隔離級別。
(3)保證開始事務前一切都是可行的。
(4)避免死鎖。






