沒用預(yù)處理,語句參數(shù)相當(dāng)于把表單提交的數(shù)據(jù)當(dāng)參數(shù)傳遞之后拼接成完整語句再查詢,在執(zhí)行的時(shí)候執(zhí)行了別的語句。比如例子中的那個(gè)語句,本來是selete * from user where username=[參數(shù)1] and password=[參數(shù)2],但是拼接了用戶傳遞的參數(shù)之后,執(zhí)行時(shí)候是:select * from user where username='' or 1=1 # and password =[參數(shù)2],#之后相當(dāng)于注釋了,實(shí)際執(zhí)行的就是select * from user where username='' or 1=1,而1=1為真,or true 返回true,所以實(shí)際返回的是整個(gè)表的數(shù)據(jù)。所以結(jié)果集不為0,故而顯示登錄成功。
2017-06-15
沒用預(yù)處理,語句參數(shù)相當(dāng)于把表單提交的數(shù)據(jù)當(dāng)參數(shù)傳遞之后拼接成完整語句再查詢,在執(zhí)行的時(shí)候執(zhí)行了別的語句。比如例子中的那個(gè)語句,本來是selete * from user where username=[參數(shù)1] and password=[參數(shù)2],但是拼接了用戶傳遞的參數(shù)之后,執(zhí)行時(shí)候是:select * from user where username='' or 1=1 # and password =[參數(shù)2],#之后相當(dāng)于注釋了,實(shí)際執(zhí)行的就是select * from user where username='' or 1=1,而1=1為真,or true 返回true,所以實(shí)際返回的是整個(gè)表的數(shù)據(jù)。所以結(jié)果集不為0,故而顯示登錄成功。
2016-11-09
因?yàn)闆]有定義用戶名和密碼是用什么樣的數(shù)據(jù)類型,例如字符串,整型,浮點(diǎn)型,布爾類型