Hướng dẫn how does mysql hash passwords? - mật khẩu băm mysql như thế nào?
Show 6.1.2.4 & nbsp; mật khẩu băm trong MySQLGhi chú Thông tin trong phần này chỉ áp dụng cho các tài khoản sử dụng các plugin xác thực MySQL liệt kê các tài khoản người dùng trong bảng MySQL sử dụng mật khẩu trong hai giai đoạn giao tiếp máy khách/máy chủ:
Nói cách khác, máy chủ kiểm tra các giá trị băm trong quá trình xác thực khi máy khách lần đầu tiên cố gắng kết nối. Máy chủ tạo ra các giá trị băm nếu máy khách được kết nối gọi hàm 3 hoặc sử dụng câu lệnh tạo mật khẩu để đặt hoặc thay đổi mật khẩu.checks hash values during authentication when a client first attempts to connect. The server generates hash values if a connected
client invokes the 3 function or uses a password-generating statement to set or change a password. Các phương thức băm mật khẩu trong MySQL có lịch sử được mô tả sau đây. Những thay đổi này được minh họa bằng các thay đổi trong kết quả từ hàm 3 tính toán các giá trị băm mật khẩu và trong cấu trúc của bảng user nơi lưu trữ mật khẩu.Phương thức băm bản gốc (trước 4,1)Phương pháp băm ban đầu tạo ra một chuỗi 16 byte. Những băm như vậy trông như thế này:
Để lưu trữ mật khẩu tài khoản, cột 0 của bảng user tại thời điểm này dài 16 byte.Phương pháp băm 4.1MySQL 4.1 đã giới thiệu mật khẩu băm cung cấp bảo mật tốt hơn và giảm nguy cơ mật khẩu bị chặn. Có một số khía cạnh cho sự thay đổi này:
Những thay đổi trong MySQL 4.1 đã diễn ra trong hai giai đoạn:
Các vấn đề tương thích liên quan đến các phương pháp bămViệc mở rộng cột 0 trong MySQL 4.1 từ 16 byte đến 41 byte ảnh hưởng đến các hoạt động cài đặt hoặc nâng cấp như sau:
Phương thức băm 4.1 chỉ được hiểu bởi các máy chủ và máy khách MySQL 4.1 (và cao hơn), có thể dẫn đến một số vấn đề tương thích. Máy khách 4.1 hoặc cao hơn có thể kết nối với máy chủ Pre-4.1, vì máy khách hiểu cả các phương thức băm mật khẩu trước 4,1 và 4.1. Tuy nhiên, máy khách Pre-4.1 cố gắng kết nối với máy chủ 4.1 hoặc cao hơn có thể gặp khó khăn. Ví dụ: máy khách MySQL 4.0 có thể thất bại với thông báo lỗi sau:mysql client may fail with the following error message:
Cuộc thảo luận sau đây mô tả sự khác biệt giữa các phương thức băm trước 4,1 và 4.1 và những gì bạn nên làm nếu bạn nâng cấp máy chủ của mình nhưng cần duy trì khả năng tương thích ngược với máy khách trước 4,1. . Thông tin này có tầm quan trọng đặc biệt đối với các lập trình viên PHP di chuyển cơ sở dữ liệu MySQL từ các phiên bản cũ hơn 4,1 đến 4.1 trở lên. Sự khác biệt giữa băm mật khẩu ngắn và dài có liên quan đến cách máy chủ sử dụng mật khẩu trong quá trình xác thực và cách nó tạo băm mật khẩu cho các máy khách được kết nối thực hiện các hoạt động thay đổi mật khẩu. Cách mà máy chủ sử dụng băm mật khẩu trong quá trình xác thực bị ảnh hưởng bởi chiều rộng của cột 0:
Ngay cả đối với các tài khoản hash ngắn, quy trình xác thực thực sự an toàn hơn một chút cho các máy khách 4.1 và sau đó so với các khách hàng lớn tuổi. Về mặt bảo mật, độ dốc từ ít nhất đến an toàn nhất là:
Cách mà máy chủ tạo ra băm mật khẩu cho các máy khách được kết nối bị ảnh hưởng bởi chiều rộng của cột 0 và biến hệ thống 9. Máy chủ 4.1 trở lên chỉ tạo các băm dài nếu đáp ứng một số điều kiện nhất định: cột 0 phải đủ rộng để giữ các giá trị dài và không được đặt thành 1.Những điều kiện áp dụng như sau:
Mục đích của biến hệ thống 9 là cho phép khả năng tương thích ngược với máy khách trước 4,1 trong trường hợp máy chủ sẽ tạo ra các băm mật khẩu dài. Tùy chọn không ảnh hưởng đến xác thực (4.1 và các máy khách sau này vẫn có thể sử dụng các tài khoản có băm mật khẩu dài), nhưng nó ngăn chặn việc tạo ra một hàm băm mật khẩu dài trong bảng user do kết quả của hoạt động thay đổi mật khẩu. Điều đó được phép xảy ra, tài khoản không còn có thể được sử dụng bởi các máy khách trước 4,1. Với 9 bị vô hiệu hóa, kịch bản không mong muốn sau đây là có thể:
Kịch bản này minh họa rằng, nếu bạn phải hỗ trợ các máy khách Pre-4.1 cũ hơn, có vấn đề là chạy máy chủ 4.1 hoặc cao hơn mà không cần 9 được đặt thành 1. Bằng cách chạy máy chủ bằng 1, các hoạt động thay đổi mật khẩu không tạo ra băm mật khẩu dài và do đó Không làm cho các tài khoản trở nên không thể truy cập được đối với các khách hàng lớn tuổi. .Nhược điểm của 1 là bất kỳ mật khẩu nào được tạo hoặc thay đổi sử dụng các băm ngắn, thậm chí đối với các máy khách 4.1 trở lên. Vì vậy, bạn mất bảo mật bổ sung được cung cấp bởi các băm mật khẩu dài. Để tạo một tài khoản có hàm băm dài (ví dụ: để sử dụng cho máy khách 4.1) hoặc để thay đổi tài khoản hiện có để sử dụng hàm băm mật khẩu dài, quản trị viên có thể đặt giá trị phiên là 9 được đặt thành 0 trong khi để lại bộ giá trị toàn cầu đến 1:
Các kịch bản sau đây là có thể trong MySQL 4.1 trở lên. Các yếu tố là liệu cột 0 ngắn hay dài, và, nếu lâu, liệu máy chủ được bắt đầu với 9 được bật hay tắt. Kịch bản 1: Cột ngắn 0 column in user table:
Kịch bản này xảy ra khi cài đặt Pre-4.1 MySQL đã được nâng cấp lên 4.1 trở lên nhưng MySQL_Upgrade chưa được chạy để nâng cấp các bảng hệ thống trong cơ sở dữ liệu Kịch bản 2: Cột dài 0 column; server started with 1:
Giá trị của 9 là không liên quan vì với cột 0 ngắn, máy chủ chỉ tạo ra băm mật khẩu ngắn. Kịch bản này xảy ra khi cài đặt Pre-4.1 MySQL đã được nâng cấp lên 4.1 trở lên nhưng MySQL_Upgrade chưa được chạy để nâng cấp các bảng hệ thống trong cơ sở dữ liệu Kịch bản 2: Cột dài 0; Máy chủ bắt đầu với 1: Các băm ngắn hoặc dài có thể được lưu trữ trong cột 0 column; server started with
mysql_old_password 8:
Như đã chỉ ra trước đó, một mối nguy hiểm trong kịch bản này là có thể các tài khoản có hàm băm mật khẩu ngắn để trở nên không thể truy cập được đối với các máy khách trước 4,1. Thay đổi mật khẩu của tài khoản như vậy được thực hiện bằng hàm 3 hoặc câu lệnh tạo mật khẩu dẫn đến tài khoản được cung cấp mật khẩu dài băm. Từ thời điểm đó, không có máy khách Pre-4.1 có thể kết nối với máy chủ bằng tài khoản đó. Khách hàng phải nâng cấp lên 4.1 trở lên. Nếu đây là một vấn đề, bạn có thể thay đổi mật khẩu theo một cách đặc biệt. Ví dụ: thông thường bạn sử dụng
Để thay đổi mật khẩu nhưng hãy tạo một hàm băm ngắn, hãy sử dụng chức năng 8 thay thế:
8 rất hữu ích cho các tình huống trong đó bạn rõ ràng muốn tạo ra một hàm băm ngắn.Nhược điểm cho từng kịch bản trước đó có thể được tóm tắt như sau: Trong kịch bản 1, bạn không thể tận dụng các băm dài hơn cung cấp xác thực an toàn hơn. Trong Kịch bản 2, 1 ngăn các tài khoản có băm ngắn không thể truy cập được, nhưng các hoạt động thay đổi mật khẩu khiến các tài khoản có băm dài để trở lại băm ngắn trừ khi bạn cẩn thận thay đổi giá trị phiên là 9 thành 0 trước tiên.Trong Kịch bản 3, các tài khoản có băm ngắn trở nên không thể truy cập được đối với máy khách trước 4.1 nếu bạn thay đổi mật khẩu mà không sử dụng rõ ràng 8.Cách tốt nhất để tránh các vấn đề tương thích liên quan đến băm mật khẩu ngắn là không sử dụng chúng:
MySQL mã hóa mật khẩu như thế nào?Máy chủ MySQL sử dụng chức năng mật khẩu để mã hóa mật khẩu MySQL để lưu trữ trong cột Mật khẩu của bảng cấp người dùng. Giá trị được trả về bởi hàm mật khẩu là chuỗi băm hoặc null nếu đối số là null. Hàm Mật khẩu chấp nhận một tham số là chuỗi được mã hóa.uses the PASSWORD function to encrypt MySQL passwords for storage in the Password column of the user grant table. The value returned by the PASSWORD function is a hashed string, or NULL if the argument was NULL. The PASSWORD function accepts one parameter which is the string to be encrypted.
MySQL lưu trữ mật khẩu người dùng như thế nào?MySQL lưu trữ thông tin đăng nhập trong bảng người dùng trong cơ sở dữ liệu hệ thống MySQL.Các hoạt động gán hoặc sửa đổi mật khẩu chỉ được phép cho người dùng có đặc quyền tạo người dùng hoặc, thay vào đó, các đặc quyền cho cơ sở dữ liệu MySQL (chèn đặc quyền để tạo tài khoản mới, cập nhật đặc quyền để sửa đổi các tài khoản hiện có).in the user table in the mysql system database. Operations that assign or modify passwords are permitted only to users with the CREATE USER privilege, or, alternatively, privileges for the mysql database ( INSERT privilege to create new accounts, UPDATE privilege to modify existing accounts).
Mật khẩu được lưu trữ trong băm như thế nào?Băm biến mật khẩu của bạn (hoặc bất kỳ phần dữ liệu nào khác) thành một chuỗi ngắn các chữ cái và/hoặc số bằng thuật toán mã hóa.Nếu một trang web bị hack, tội phạm mạng không có quyền truy cập vào mật khẩu của bạn.Thay vào đó, họ chỉ có quyền truy cập vào Hash được mã hóa được tạo bởi mật khẩu của bạn.. If a website is hacked, cyber criminals don't get access to your password. Instead, they just get access to the encrypted “hash” created by your password.
Các băm mật khẩu MySQL được lưu trữ ở đâu?Các băm mật khẩu được lưu trữ trong bảng người dùng của cơ sở dữ liệu MySQL.Bản thân các tệp bảng thường được lưu trữ trong cấu trúc cây dưới/var/lib/mysql, nhưng vị trí đó có thể được sửa đổi bằng các tùy chọn xây dựng hoặc cấu hình thời gian chạy.in the user table of the mysql database. The table files themselves are typically stored in a tree structure under /var/lib/mysql , but that location can be modified by build options or run-time configuration. |