Khanh's blog

<- Quay về trang chủ

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'

Nguồn: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#operator_binary

Tags: mysql