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