SELECT BINARY trong MySQL
Hôm nay được chị tester thông báo 1 bug: Khi user login thì hệ thống không phân biệt username & password dạng chữ hoa, chữ thường :|
Câu query chỉ đơn giản là:
SELECT user_login
FROM sys_user
WHERE user_login = '$user_login'
AND user_passwd = '$password'
Hóa ra thằng MySQL nó không phân biệt chữ hoa, chữ thường nếu field type là varchar :-s
Cách fix: Có nhiều cách nhưng đơn giản nhất là "ép" về dạng binary để so sánh theo byte
SELECT user_login
FROM sys_user
WHERE BINARY user_login = '$user_login'
AND BINARY user_passwd = '$password'