Phương pháp được sử dụng nhiều nhất để băm mật khẩu trong php là gì?

Ý chính của xác thực là cung cấp cho người dùng một bộ thông tin đăng nhập, chẳng hạn như tên người dùng và mật khẩu, đồng thời để xác minh rằng họ cung cấp thông tin đăng nhập chính xác bất cứ khi nào họ muốn truy cập vào ứng dụng. Do đó, chúng tôi cần một cách để lưu trữ các thông tin đăng nhập này trong cơ sở dữ liệu của mình để so sánh trong tương lai. Tuy nhiên, việc lưu trữ mật khẩu ở phía máy chủ để xác thực là một nhiệm vụ khó khăn. Hãy cùng khám phá một trong những cơ chế giúp lưu trữ mật khẩu an toàn và dễ dàng hơn. băm

Lưu trữ mật khẩu là rủi ro và phức tạp

Một cách tiếp cận đơn giản để lưu trữ mật khẩu là tạo một bảng trong cơ sở dữ liệu của chúng tôi để ánh xạ tên người dùng với mật khẩu. Khi người dùng đăng nhập, máy chủ sẽ nhận được yêu cầu xác thực với tải trọng chứa tên người dùng và mật khẩu. Chúng tôi tra cứu tên người dùng trong bảng và so sánh mật khẩu được cung cấp với mật khẩu được lưu trữ. Một trận đấu cho phép người dùng truy cập vào ứng dụng

Sức mạnh bảo mật và khả năng phục hồi của mô hình này phụ thuộc vào cách lưu trữ mật khẩu. Định dạng lưu trữ mật khẩu cơ bản nhất nhưng cũng kém an toàn nhất là văn bản rõ ràng

Theo giải thích của Dan Cornell từ Tập đoàn Denim, văn bản rõ ràng đề cập đến "dữ liệu có thể đọc được được truyền hoặc lưu trữ ở dạng rõ ràng", ví dụ: không được mã hóa. Bạn cũng có thể đã thấy thuật ngữ bản rõ và văn bản thuần túy. Có gì khác biệt? . Điều quan trọng là phải biết sự khác biệt giữa các thuật ngữ này khi chúng ta tiến về phía trước

Lưu trữ mật khẩu trong văn bản rõ ràng tương đương với việc viết chúng ra một tờ giấy kỹ thuật số. Nếu kẻ tấn công đột nhập vào cơ sở dữ liệu và đánh cắp bảng mật khẩu, thì kẻ tấn công có thể truy cập từng tài khoản người dùng. Vấn đề này phức tạp hơn do thực tế là nhiều người dùng sử dụng lại hoặc sử dụng các biến thể của một mật khẩu duy nhất, có khả năng cho phép kẻ tấn công truy cập các dịch vụ khác với dịch vụ bị xâm phạm. Tất cả điều đó nghe giống như một cơn ác mộng về an ninh

Cuộc tấn công có thể đến từ bên trong tổ chức. Một kỹ sư phần mềm lừa đảo có quyền truy cập vào cơ sở dữ liệu có thể lạm dụng quyền truy cập đó, lấy thông tin xác thực văn bản rõ ràng và truy cập vào bất kỳ tài khoản nào

Một cách an toàn hơn để lưu trữ mật khẩu là chuyển đổi nó thành dữ liệu không thể chuyển đổi trở lại mật khẩu ban đầu. Cơ chế này được gọi là băm. Hãy tìm hiểu thêm về lý thuyết đằng sau hàm băm, lợi ích và hạn chế của nó

"Chúng tôi phải bảo vệ tài khoản người dùng khỏi truy cập trái phép cả bên trong và bên ngoài. Lưu trữ Cleartext không bao giờ được là một tùy chọn cho mật khẩu. Băm và muối phải luôn là một phần của chiến lược quản lý mật khẩu. "

Tweet cái này đi

Băm về cái gì?

Theo định nghĩa từ điển, băm đề cập đến việc "cắt một thứ gì đó thành từng mảnh nhỏ" để làm cho nó trông giống như một "mớ hỗn độn". Định nghĩa đó áp dụng chặt chẽ cho những gì băm đại diện trong điện toán

Trong mật mã học, hàm băm là một thuật toán toán học ánh xạ dữ liệu có kích thước bất kỳ thành một chuỗi bit có kích thước cố định. Chúng ta có thể coi đầu vào chức năng là thông báo hoặc đơn giản là đầu vào. Đầu ra hàm chuỗi có kích thước cố định được gọi là hàm băm hoặc thông báo tóm tắt. Như OWASP đã nêu, các hàm băm được sử dụng trong mật mã có các thuộc tính chính sau

  • Thật dễ dàng và thiết thực để tính toán hàm băm, nhưng "khó hoặc không thể tạo lại đầu vào ban đầu nếu chỉ biết giá trị hàm băm. "
  • Rất khó để tạo đầu vào ban đầu phù hợp với đầu ra mong muốn cụ thể

Do đó, trái ngược với mã hóa, băm là cơ chế một chiều. Dữ liệu được băm thực tế không thể được "chưa băm"

Các thuật toán băm thường được sử dụng bao gồm thuật toán Thông báo tiêu hóa [MDx], chẳng hạn như MD5 và Thuật toán băm bảo mật [SHA], chẳng hạn như SHA-1 và họ SHA-2 bao gồm thuật toán SHA-256 được sử dụng rộng rãi. Sau này, chúng ta sẽ tìm hiểu về sức mạnh của các thuật toán này và lý do tại sao một số trong số chúng không còn được dùng nữa do những tiến bộ điện toán nhanh chóng hoặc đã không còn được sử dụng do các lỗ hổng bảo mật

Trong bitcoin, tính toàn vẹn và chuỗi khối sử dụng thuật toán SHA-256 làm hàm băm mật mã cơ bản. Hãy xem một ví dụ băm bằng SHA-256 và Python

Nếu bạn muốn làm theo, bạn có thể sử dụng thay thế Python trực tuyến. nó IDE để chạy các tập lệnh Python dễ dàng

Thay thế Python. nó IDE cung cấp cho bạn trình chỉnh sửa mã để nhập mã Python, các nút để lưu hoặc chạy tập lệnh và bảng điều khiển để trực quan hóa đầu ra tập lệnh

Trong trình chỉnh sửa mã, hãy nhập lệnh sau để nhập phương thức khởi tạo của thuật toán băm SHA-256 từ mô-đun

h = sha256[]
1

from hashlib import sha256

Trong dòng bên dưới, tạo một thể hiện của lớp

h = sha256[]
2

h = sha256[]

Tiếp theo, sử dụng phương thức

h = sha256[]
3 để cập nhật đối tượng băm

h.update[b'python1990K00L']

Sau đó, sử dụng phương thức

h = sha256[]
4 để lấy tóm tắt của chuỗi được truyền cho phương thức
h = sha256[]
3

hash = h.hexdigest[]

Thông báo là đầu ra của hàm băm

Cuối cùng, in biến

h = sha256[]
6 để xem giá trị băm trong bảng điều khiển

h = sha256[]
1

Kịch bản hoàn chỉnh trông như thế này

h = sha256[]
2

Để chạy tập lệnh, nhấp vào nút "chạy" ở đầu màn hình. Trên bàn điều khiển, bạn sẽ thấy đầu ra sau

h = sha256[]
3

Tóm lại, bạn cung cấp cho hàm băm một chuỗi làm đầu vào và lấy lại một chuỗi khác làm đầu ra đại diện cho đầu vào được băm

Đầu vào

h = sha256[]
7

Băm [SHA-256]

h = sha256[]
8

Hãy thử băm chuỗi

h = sha256[]
9. Bạn có nhận được hàm băm sau không?

h = sha256[]
7

"Hiểu về chuỗi khối và tiền điện tử, chẳng hạn như bitcoin, sẽ dễ dàng hơn khi bạn hiểu cách thức hoạt động của các hàm băm mật mã. "

Tweet cái này đi

Sử dụng SHA-256, chúng tôi đã chuyển đổi đầu vào có kích thước ngẫu nhiên thành chuỗi bit có kích thước cố định. Lưu ý rằng, mặc dù có sự khác biệt về độ dài giữa

h = sha256[]
7 và
h = sha256[]
9, nhưng mỗi đầu vào tạo ra một hàm băm có cùng độ dài. Tại sao vậy?

Sử dụng

h = sha256[]
4, bạn đã tạo ra biểu diễn thập lục phân của giá trị băm. Đối với bất kỳ đầu vào nào, mỗi đầu ra tóm tắt thông báo ở định dạng thập lục phân có 64 chữ số thập lục phân. Mỗi cặp chữ số đại diện cho một byte. Do đó, bản tóm tắt có 32 byte. Vì mỗi byte chứa 8 bit thông tin, nên chuỗi băm đại diện cho tổng cộng 256 bit thông tin. Vì lý do này, thuật toán này được gọi là SHA-256 và tất cả các đầu vào của nó đều có đầu ra có kích thước bằng nhau

Một số hàm băm được sử dụng rộng rãi nhưng thuộc tính và yêu cầu của chúng không cung cấp bảo mật. Ví dụ: kiểm tra dự phòng theo chu kỳ [CRC] là một hàm băm được sử dụng trong các ứng dụng mạng để phát hiện lỗi nhưng nó không có khả năng chống ảnh trước, điều này khiến nó không phù hợp để sử dụng trong các ứng dụng bảo mật như chữ ký số

Trong suốt bài viết này, chúng ta sẽ khám phá các thuộc tính giúp hàm băm phù hợp để sử dụng trong các ứng dụng bảo mật. Để bắt đầu, chúng ta nên biết rằng ngay cả khi chúng ta tìm thấy chi tiết về cách đầu vào của hàm băm mật mã được tính thành hàm băm, thì việc đảo ngược hàm băm trở lại đầu vào là không thực tế. Tại sao vậy?

Các hàm băm mật mã thực tế không thể đảo ngược

Các hàm băm hoạt động như các hàm một chiều bằng cách sử dụng các phép toán cực kỳ khó và cồng kềnh để hoàn nguyên, chẳng hạn như toán tử modulo

Toán tử modulo cho chúng ta phần còn lại của một phép chia. Ví dụ:

h.update[b'python1990K00L']
3 là
h.update[b'python1990K00L']
4 vì phần còn lại của
h.update[b'python1990K00L']
5 là
h.update[b'python1990K00L']
4 khi sử dụng phép chia số nguyên. Hoạt động này là xác định, với cùng một đầu vào luôn tạo ra cùng một đầu ra. về mặt toán học,
h.update[b'python1990K00L']
5 luôn dẫn đến
h.update[b'python1990K00L']
4. Tuy nhiên, một đặc điểm quan trọng của phép toán modulo là chúng ta không thể tìm thấy toán hạng ban đầu cho kết quả. Theo nghĩa đó, các hàm băm là không thể đảo ngược

Biết rằng kết quả của phép toán modulo là

h.update[b'python1990K00L']
4 chỉ cho chúng ta biết rằng
hash = h.hexdigest[]
0 chia cho
hash = h.hexdigest[]
1 có phần nhắc nhở là
h.update[b'python1990K00L']
4 nhưng nó không cho chúng ta biết bất cứ điều gì về
hash = h.hexdigest[]
0 và
hash = h.hexdigest[]
1. Có vô số giá trị có thể được thay thế cho
hash = h.hexdigest[]
0 và
hash = h.hexdigest[]
1 cho
hash = h.hexdigest[]
7 để trả về
h.update[b'python1990K00L']
4

h = sha256[]
7

Khi sử dụng hàm băm mật mã, chúng ta không thể tìm thấy hình ảnh trước bằng cách nhìn vào hàm băm. Hình ảnh trước là cái mà chúng ta gọi là giá trị tạo ra một hàm băm cụ thể nhất định khi được sử dụng làm đầu vào cho hàm băm - giá trị văn bản gốc. Do đó, hàm băm mật mã được thiết kế để chống lại các cuộc tấn công trước hình ảnh; . Vì vậy, nếu kẻ tấn công biết một hàm băm, thì về mặt tính toán sẽ không thể tìm thấy bất kỳ đầu vào nào băm cho đầu ra đã cho đó. Thuộc tính này là thứ làm cho hàm băm trở thành một trong những nền tảng của bitcoin và chuỗi khối

Nếu bạn tò mò về cách thức hoạt động của hàm băm, bài viết Wikipedia này cung cấp tất cả thông tin chi tiết về cách thức hoạt động của Thuật toán băm an toàn 2 [SHA-2]

Một thay đổi nhỏ có tác động lớn

Một ưu điểm khác của hàm băm an toàn là đầu ra của nó không dễ dự đoán. Hàm băm của

hash = h.hexdigest[]
9 sẽ rất khác so với hàm băm của
h = sha256[]
10, mặc dù chỉ có ký tự cuối cùng trong chuỗi thay đổi và cả hai chuỗi sẽ liền kề nhau trong danh sách được sắp xếp theo thứ tự bảng chữ cái

Đầu vào

hash = h.hexdigest[]
9

Băm [SHA-256]

h = sha256[]
12

Đầu vào

h = sha256[]
10

Băm [SHA-256]

h = sha256[]
14

Đây là tập lệnh Python được sử dụng để tính toán các giá trị này trong trường hợp bạn cần

h = sha256[]
4

Thay thế

h = sha256[]
15 bằng chuỗi mong muốn để băm và chạy nó khi thay thế. nó

Thuộc tính này được gọi là hiệu ứng tuyết lở và nó có tác dụng mong muốn là nếu đầu vào thay đổi một chút thì đầu ra sẽ thay đổi đáng kể

Do đó, không có cách khả thi nào để chúng tôi xác định giá trị băm của

h = sha256[]
16 dựa trên hai giá trị băm trước đó;

Sử dụng băm mật mã để lưu trữ mật khẩu an toàn hơn

Các thuộc tính toán học không thể đảo ngược của hàm băm làm cho nó trở thành một cơ chế phi thường để che giấu mật khẩu ở trạng thái nghỉ và chuyển động. Một thuộc tính quan trọng khác làm cho các hàm băm phù hợp với việc lưu trữ mật khẩu là chúng có tính xác định.

Hàm xác định là hàm có cùng đầu vào luôn tạo ra cùng một đầu ra. Điều này rất quan trọng để xác thực vì chúng tôi cần đảm bảo rằng một mật khẩu nhất định sẽ luôn tạo ra cùng một hàm băm;

Để tích hợp hàm băm trong quy trình lưu trữ mật khẩu, khi người dùng được tạo, thay vì lưu trữ mật khẩu ở dạng văn bản rõ ràng, chúng tôi băm mật khẩu và lưu trữ tên người dùng và cặp hàm băm trong bảng cơ sở dữ liệu. Khi người dùng đăng nhập, chúng tôi băm mật khẩu được gửi và so sánh nó với hàm băm được kết nối với tên người dùng được cung cấp. Nếu mật khẩu được băm và hàm băm được lưu trữ khớp với nhau, chúng tôi có thông tin đăng nhập hợp lệ. Điều quan trọng cần lưu ý là chúng tôi không bao giờ lưu trữ mật khẩu văn bản rõ ràng trong quá trình này, chúng tôi băm mật khẩu đó và sau đó quên mật khẩu đó

Trong khi việc truyền mật khẩu phải được mã hóa, hàm băm mật khẩu không cần được mã hóa khi nghỉ ngơi. Khi được triển khai đúng cách, hàm băm mật khẩu được bảo mật bằng mật mã. Việc triển khai này sẽ liên quan đến việc sử dụng muối để khắc phục những hạn chế của hàm băm

Tính duy nhất là thuộc tính chính của muối;

Hạn chế của hàm băm

Băm có vẻ khá mạnh mẽ. Nhưng nếu kẻ tấn công đột nhập vào máy chủ và đánh cắp mã băm mật khẩu, tất cả những gì kẻ tấn công có thể thấy là dữ liệu trông ngẫu nhiên không thể đảo ngược thành văn bản gốc do kiến ​​trúc của hàm băm. Kẻ tấn công sẽ cần cung cấp đầu vào cho hàm băm để tạo hàm băm mà sau đó có thể được sử dụng để xác thực, có thể thực hiện ngoại tuyến mà không làm tăng bất kỳ cờ đỏ nào trên máy chủ

Sau đó, kẻ tấn công có thể đánh cắp mật khẩu văn bản rõ ràng từ người dùng thông qua các kỹ thuật giả mạo và lừa đảo hiện đại hoặc thử tấn công vũ phu trong đó kẻ tấn công nhập mật khẩu ngẫu nhiên vào hàm băm cho đến khi tìm thấy hàm băm phù hợp

Một cuộc tấn công vũ phu phần lớn không hiệu quả vì việc thực thi các hàm băm có thể được cấu hình khá lâu. Tốc độ băm này sẽ được giải thích chi tiết hơn sau. Kẻ tấn công có bất kỳ lựa chọn nào khác không?

Vì các hàm băm có tính xác định [đầu vào hàm giống nhau luôn dẫn đến cùng một hàm băm], nên nếu một vài người dùng sử dụng cùng một mật khẩu, thì hàm băm của họ sẽ giống hệt nhau. Nếu một số lượng đáng kể người được ánh xạ tới cùng một hàm băm, đó có thể là dấu hiệu cho thấy hàm băm đại diện cho một mật khẩu thường được sử dụng và cho phép kẻ tấn công thu hẹp đáng kể số lượng mật khẩu sử dụng để đột nhập bằng vũ lực

Ngoài ra, thông qua một cuộc tấn công bảng cầu vồng, kẻ tấn công có thể sử dụng cơ sở dữ liệu lớn về các chuỗi băm được tính toán trước để tìm đầu vào của các hàm băm mật khẩu bị đánh cắp. Chuỗi băm là một hàng trong bảng cầu vồng, được lưu trữ dưới dạng giá trị băm ban đầu và giá trị cuối cùng thu được sau nhiều thao tác lặp lại trên giá trị ban đầu đó. Vì một cuộc tấn công bảng cầu vồng phải tính toán lại nhiều hoạt động trong số này, nên chúng ta có thể giảm thiểu một cuộc tấn công bảng cầu vồng bằng cách tăng cường băm với quy trình thêm dữ liệu ngẫu nhiên duy nhất vào mỗi đầu vào tại thời điểm chúng được lưu trữ. Phương pháp này được gọi là thêm muối vào hàm băm và nó tạo ra hàm băm mật khẩu có muối

Với một loại muối, hàm băm không chỉ dựa trên giá trị của mật khẩu. Đầu vào được tạo thành từ mật khẩu cộng với muối. Một bảng cầu vồng được xây dựng cho một tập hợp các giá trị băm không được đánh dấu. Nếu mỗi hình ảnh trước bao gồm một giá trị duy nhất, không thể đoán được, thì bảng cầu vồng là vô dụng. Khi kẻ tấn công nắm giữ muối, bảng cầu vồng bây giờ cần được tính toán lại, điều này lý tưởng sẽ mất một thời gian rất dài, tiếp tục giảm thiểu vectơ tấn công này

“Bí quyết là đảm bảo nỗ lực “phá vỡ” hàm băm vượt quá giá trị mà thủ phạm sẽ thu được khi làm như vậy. Không có gì trong số này là về việc "không thể bị tấn công"; . " - Cuộc Săn Thành Troy

Không Cần Tốc Độ

Theo Jeff Atwood, "băm, khi được sử dụng để bảo mật, cần phải chậm. " Hàm băm mật mã được sử dụng để băm mật khẩu cần tính toán chậm vì thuật toán được tính toán nhanh có thể khiến các cuộc tấn công vũ phu trở nên khả thi hơn, đặc biệt là với sức mạnh phát triển nhanh chóng của phần cứng hiện đại. Chúng ta có thể đạt được điều này bằng cách làm cho phép tính băm chậm lại bằng cách sử dụng nhiều lần lặp bên trong hoặc bằng cách tăng cường bộ nhớ tính toán

Hàm băm mật mã chậm cản trở quá trình đó nhưng không làm cho nó dừng lại do tốc độ tính toán hàm băm ảnh hưởng đến cả người dùng có mục đích tốt và người dùng độc hại. Điều quan trọng là đạt được sự cân bằng tốt giữa tốc độ và khả năng sử dụng cho các hàm băm. Người dùng có mục đích tốt sẽ không có tác động đáng chú ý đến hiệu suất khi thử một lần đăng nhập hợp lệ

Các cuộc tấn công va chạm Các hàm băm không dùng nữa

Vì các hàm băm có thể lấy đầu vào ở bất kỳ kích thước nào nhưng tạo ra các giá trị băm là các chuỗi có kích thước cố định, nên tập hợp tất cả các đầu vào có thể là vô hạn trong khi tập hợp tất cả các đầu ra có thể là hữu hạn. Điều này giúp nhiều đầu vào có thể ánh xạ tới cùng một hàm băm. Do đó, ngay cả khi chúng tôi có thể đảo ngược hàm băm, chúng tôi sẽ không biết chắc chắn rằng kết quả là đầu vào đã chọn. Điều này được gọi là va chạm và nó không phải là hiệu ứng mong muốn

Xung đột mật mã xảy ra khi hai đầu vào duy nhất tạo ra cùng một hàm băm. Do đó, một cuộc tấn công va chạm là một nỗ lực để tìm hai hình ảnh trước tạo ra cùng một hàm băm. Kẻ tấn công có thể sử dụng xung đột này để đánh lừa các hệ thống dựa trên các giá trị được băm bằng cách giả mạo một hàm băm hợp lệ bằng cách sử dụng dữ liệu không chính xác hoặc độc hại. Do đó, các hàm băm mật mã cũng phải có khả năng chống lại một cuộc tấn công va chạm bằng cách khiến những kẻ tấn công rất khó tìm thấy các giá trị duy nhất này

Nguồn. Thông báo xung đột SHA1 đầu tiên [Google]

"Vì các đầu vào có thể có độ dài vô hạn nhưng các giá trị băm có độ dài cố định, nên có thể xảy ra va chạm. Mặc dù rủi ro va chạm là rất thấp về mặt thống kê, va chạm đã được tìm thấy trong các hàm băm thường được sử dụng. "

Tweet cái này đi

Đối với các thuật toán băm đơn giản, một tìm kiếm đơn giản trên Google sẽ cho phép chúng tôi tìm các công cụ chuyển đổi hàm băm trở lại đầu vào văn bản rõ ràng của nó. Thuật toán MD5 được coi là có hại ngày nay và Google đã công bố vụ va chạm SHA1 đầu tiên vào năm 2017. Cả hai thuật toán băm đều được Google cho là không an toàn để sử dụng và không được chấp nhận do xảy ra xung đột mật mã

Google khuyên bạn nên sử dụng các thuật toán băm mạnh hơn như SHA-256 và SHA-3. Các tùy chọn khác thường được sử dụng trong thực tế là

h = sha256[]
17,
h = sha256[]
18, trong số nhiều tùy chọn khác mà bạn có thể tìm thấy trong danh sách các thuật toán mật mã này. Tuy nhiên, như chúng ta đã khám phá trước đó, băm một mình là không đủ và nên được kết hợp với muối. Tìm hiểu thêm về cách thêm muối vào hàm băm là cách tốt hơn để lưu trữ mật khẩu

Tóm tắt lại

Hãy tóm tắt lại những gì chúng ta đã học được thông qua bài viết này

  • Mục đích cốt lõi của băm là tạo dấu vân tay của dữ liệu để đánh giá tính toàn vẹn của dữ liệu
  • Hàm băm lấy đầu vào tùy ý và biến chúng thành đầu ra có độ dài cố định
  • Để đủ điều kiện là hàm băm mật mã, hàm băm phải có khả năng chống ảnh trước và chống va chạm
  • Do bảng cầu vồng, chỉ băm thôi là không đủ để bảo vệ mật khẩu để khai thác hàng loạt. Để giảm thiểu vectơ tấn công này, hàm băm phải tích hợp việc sử dụng muối mật mã
  • Băm mật khẩu được sử dụng để xác minh tính toàn vẹn của mật khẩu của bạn, được gửi trong khi đăng nhập, so với hàm băm được lưu trữ để mật khẩu thực của bạn không bao giờ phải được lưu trữ
  • Không phải tất cả các thuật toán mật mã đều phù hợp với ngành công nghiệp hiện đại. Tại thời điểm viết bài này, MD5 và SHA-1 đã được Google báo cáo là dễ bị tổn thương do va chạm. Họ SHA-2 là một lựa chọn tốt hơn

Đơn giản hóa việc quản lý mật khẩu với Auth0

Bạn có thể giảm thiểu chi phí băm, muối và quản lý mật khẩu thông qua Auth0. Chúng tôi giải quyết các trường hợp sử dụng danh tính phức tạp nhất bằng một nền tảng có thể mở rộng và dễ tích hợp, đảm bảo hàng tỷ lượt đăng nhập mỗi tháng

Auth0 giúp bạn ngăn chặn dữ liệu nhận dạng quan trọng rơi vào tay kẻ xấu. Chúng tôi không bao giờ lưu trữ mật khẩu trong văn bản rõ ràng. Mật khẩu luôn được băm và thêm muối bằng bcrypt. Ngoài ra, mã hóa dữ liệu được cung cấp khi nghỉ ngơi và chuyển tiếp bằng cách sử dụng TLS với mã hóa AES ít nhất 128-bit. Chúng tôi đã tích hợp tính năng bảo mật tiên tiến nhất vào sản phẩm của mình để bảo vệ doanh nghiệp và người dùng của bạn

Thuật toán băm tốt nhất cho mật khẩu là gì?

Để bảo vệ mật khẩu, các chuyên gia khuyên bạn nên sử dụng thuật toán băm mạnh và chậm như Argon2 hoặc Bcrypt, kết hợp với muối [hoặc tốt hơn nữa là với muối và tiêu]. [Về cơ bản, tránh các thuật toán nhanh hơn cho việc sử dụng này. ] Để xác minh chữ ký và chứng chỉ tệp, SHA-256 là một trong những lựa chọn thuật toán băm tốt nhất của bạn.

PHP sử dụng thuật toán băm nào?

PHP có tổng cộng 46 thuật toán băm đã đăng ký, trong đó “sha1”, “sha256”, “md5”, “haval160, 4” are the most popular ones. $string: This parameter expects the string to be hashed. $getRawOutput: This optional parameter expects a boolean value, on TRUE the function returns the hash in a raw binary format.

là SHA

Việc chọn thuật toán chậm thực sự được ưa thích hơn để băm mật khẩu. Trong số các sơ đồ băm được cung cấp, chỉ PBKDF2 và Bcrypt được thiết kế để hoạt động chậm, điều này khiến chúng trở thành lựa chọn tốt nhất để băm mật khẩu, MD5 và SHA-256 được thiết kế để hoạt động nhanh và do đó, điều này khiến chúng . .

Bạn nên sử dụng tùy chọn xử lý nào cho mật khẩu PHP?

Sử dụng password_hash là cách được khuyến nghị để lưu trữ mật khẩu. Đừng tách chúng thành DB và tệp. Giả sử chúng ta có đầu vào sau. $password = $_POST['password'];

Chủ Đề