2012-07-30 9 views
6

Tôi đã tự hỏi trong trường hợp hoạt động chọn bình thường, tìm kiếm không phân biệt chữ hoa chữ thường. Vì vậy SELECT * FROM tbl WHERE name = aBc cũng sẽ xem xét tên với giá trị ABC, abc, abc vvNếu MYSQL phân biệt chữ hoa chữ thường, nó hoạt động như thế nào đối với trường Mật khẩu trong Đăng nhập?

nhưng trong trường hợp chức năng đăng nhập chúng tôi chỉ làm SELECT * FROM tbl WHERE password = aBc sẽ là trường hợp nhạy cảm và chỉ xem xét mật khẩu có giá trị gia ABC.

Điều này xảy ra như thế nào? Tôi không tìm thấy bất kỳ điều gì về điều này trong các tìm kiếm của mình.

Hãy quan tâm giải thích.

Thanx Tất cả.

+0

Nếu bạn lưu mật khẩu dưới dạng băm, nó sẽ không thành vấn đề. Và đó là cách bạn nên làm. –

+0

lưu mật khẩu dưới dạng văn bản thuần túy? ... đó là một trong những tốt – Zaffy

+0

Không @quarry không phải là tôi đã chỉ tự hỏi làm thế nào mà hoạt động? –

Trả lời

5

Tôi nghĩ rằng nó phụ thuộc vào đối chiếu các cột, collation cơ sở dữ liệu mặc định trong MySQL utf8_general_ci trong đó ci ở cuối là viết tắt của chữ hoa chữ thường.

mật khẩu nhạy cảm của trường hợp sẽ chỉ hoạt động nếu bạn đang lưu trữ mật khẩu ở định dạng được mã hóa bằng cách sử dụng chức năng MD5 hoặc PASSWORD.

show variables like '%collation%'; 
+---------------------------+-------------------+ 
| Variable_name    | Value    | 
+---------------------------+-------------------+ 
| collation_connection  | latin1_swedish_ci | 
| collation_database  | utf8_general_ci | 
| collation_server   | latin1_swedish_ci | 
+---------------------------+-------------------+ 
+0

nhưng vẫn hoạt động như Phân biệt chữ hoa chữ thường ngay cả khi tôi không lưu mật khẩu được mã hóa vào băm. –

+0

Thanx @Omesh Tôi nghĩ rằng giải thích nó rất tốt và phù hợp với các trường hợp thử nghiệm của tôi. –

+0

Bạn được chào đón! :) – Omesh

1

Tôi không chắc câu trả lời cho câu hỏi chính xác của bạn là gì, tuy nhiên nếu bạn đang lưu trữ mật khẩu trong cơ sở dữ liệu dưới dạng văn bản thì đó là một ý tưởng rất tồi. Những gì bạn nên làm thay vì băm mật khẩu khi đăng ký và lưu trữ nó trong cơ sở dữ liệu của bạn trong biểu mẫu đó. Sau đó, mỗi lần người dùng cố gắng đăng nhập, bạn sẽ khôi phục mật khẩu đã gửi và so sánh nó với mã băm được lưu trữ trong hàng có tên người dùng phù hợp. Vì hàm băm IS phân biệt chữ hoa chữ thường, điều này giải quyết được vấn đề của bạn trong khi bổ sung mức bảo mật cần thiết.

1

Trong nhiều mật khẩu triển khai hoặc băm của chúng được so sánh trong máy chủ ứng dụng nên vấn đề không phát sinh.

1

cho trường hợp nhạy cảm sử dụng (Binary)

SELECT * FROM tbl ĐÂU Binary password = abc

+0

Thats đúng nhưng đó không phải là câu hỏi của tôi thanx @KSA. –

3

$ sql = "SELECT * FROM dùng nơi username = '$ username' VÀ mật khẩu BINARY = '$ password' ";

Các vấn đề liên quan