但是,在某些情況下,這個SQL是根據用戶的輸入拼寫出來的。如果用戶故意輸入壹個字符串,會使後臺解析失敗,這就是SQL註入。比如用戶輸入密碼,輸入''''或者1=1 ' ',這樣後臺程序解析的時候,SQL語句就拼寫出來了。可能是這樣的:select count (1) from tab其中user =用戶輸入並且pass = ' '或者1 = 1;看這個語句可以知道,經過解析,用戶沒有輸入密碼,添加了壹個1=1的身份條件。這樣,當執行這個SQL時,返回的計數值必須大於1。如果對程序的邏輯判斷不太多的話,用用戶名userinput登錄,不需要密碼也是可以的。
為了防止SQL註入,我們應該先過濾掉密碼輸入中的單引號,然後在後面添加其他邏輯判斷,或者不要使用這樣的動態SQL拼寫。