Cách mã hóa mật khẩu trong JavaScript
Trách nhiệm cao nhất của bất kỳ nhà thiết kế hệ thống nào là bảo vệ dữ liệu người dùng. Vi phạm dữ liệu có thể gây ra thiệt hại trị giá hàng triệu đô la và theo Imperva, Hoa Kỳ có chi phí vi phạm dữ liệu cao nhất Show
Cơ hội lạm dụng dữ liệu cao hơn khi dữ liệu chỉ là văn bản thuần túy. Nếu bạn không thể bảo vệ dữ liệu, bước tiếp theo là làm cho dữ liệu không thể đọc được bằng cách mã hóa dữ liệu để kẻ tấn công không lấy được nhiều dữ liệu. Ví dụ: giả sử ai đó có quyền truy cập vào email và mật khẩu vào hồ sơ mạng xã hội của bạn. Trong trường hợp đó, thật dễ dàng để truy cập hồ sơ của bạn mà bạn không biết. Tuy nhiên, điều gì sẽ xảy ra nếu mật khẩu của bạn được mã hóa? Nếu bạn muốn bảo vệ email của người dùng, điều đó thật tuyệt, nhưng bảo vệ mật khẩu người dùng là điều bắt buộc. Mặc dù người dùng phải đặt mật khẩu mạnh, cả người dùng và hệ thống đều hoạt động dựa trên mật khẩu bảo vệ. May mắn thay, có nhiều phương pháp thực hiện mã hóa/giải mã để giúp tăng cường an toàn cho mật khẩu. Bài viết này sẽ hướng dẫn bạn cách sử dụng password hashing với thư viện bcrypt trong Node. js Nhảy ra đằng trước
Băm mật khẩu là gì?Băm mật khẩu là quá trình biến mật khẩu thành các chữ cái và số bằng các thuật toán cụ thể. Băm có lợi khi kẻ xấu vi phạm dữ liệu. Với tính năng băm, dữ liệu họ nhận được ở định dạng băm và dữ liệu được băm không thể hiểu được. Một số thuật toán phổ biến để băm mật khẩu bao gồm bcrypt và SHA. Trong bài viết này, chúng tôi sẽ tập trung vào việc sử dụng bycrypt để băm mật khẩu trong Node. js. Đây là một ví dụ về băm văn bản thuần túy hash('[email protected]') = 1b21hb2hb1u2gu3g2fxy1v2ux1v2y3vu12g4u3ggvgu43598sa89da98sd79adshuavusdva9sdguasd Băm mật khẩu trong Node. js với bcryptBcrypt là thư viện giúp bạn băm mật khẩu. Nó sử dụng hàm $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save1 dựa trên mật mã Blowfish. Mật mã Blowfish là mật mã khối đối xứng cung cấp tốc độ mã hóa tốt nhất trong ngành; Bcrypt sử dụng muối để bảo vệ chống lại các cuộc tấn công như bảng cầu vồng, vũ phu, v.v. Bcrypt là một chức năng thích ứng, vì vậy nếu bạn thường xuyên gọi chức năng của bcrypt, nó sẽ trở nên chậm hơn. Điều này cản trở khả năng của kẻ tấn công được hưởng lợi từ một cuộc tấn công vũ phu Phụ thuộc BcryptBcrypt cần một số phụ thuộc để hoạt động chính xác. Bcrypt yêu cầu gói nút-gyp, gói này biên dịch các mô-đun bổ trợ riêng cho Node. js. Bcrypt cũng phụ thuộc vào Python và bạn sẽ cần ≥v2. x. Người dùng Windows cần cài đặt các tùy chọn C# và C++ với phiên bản VS của họ. Bạn cũng sẽ cần OpenSSL v0. 7. 7 Ví dụ về băm mật khẩu với bcrypt trong Node. jsĐiều quan trọng là phải muối và băm mật khẩu của người dùng trước khi lưu trữ chúng vì mục đích an toàn dữ liệu. Bcrypt biến một mật khẩu đơn giản thành các ký tự có độ dài cố định được gọi là hàm băm. Trước khi băm mật khẩu, bcrypt áp dụng một $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save2, một chuỗi ngẫu nhiên duy nhất làm cho hàm băm không thể đoán trước Hãy tạo một nút. js và sử dụng bcrypt để băm mật khẩu. Sau khi tạo tệp $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save3, bạn cần cài đặt bcrypt $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save Bây giờ, bạn đã sẵn sàng làm việc với bcrypt. Hãy nhập nó và xác định $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save4, như một yếu tố chi phí hoặc công việc const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]" Mã hóa mật khẩu trong Node. js sử dụng lời hứa JavaScript $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save 6JavaScript $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save6 là một đối tượng được trả về bởi hàm $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save6, là biểu diễn của trạng thái hiện tại. Khi $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save6 được trả lại cho người gọi, nó cung cấp các phương thức để xử lý thành công hay thất bại của hoạt động dựa trên điều kiện Có hai phương pháp để mã hóa mật khẩu. Đây là phương pháp đầu tiên hash('[email protected]') = 1b21hb2hb1u2gu3g2fxy1v2ux1v2y3vu12g4u3ggvgu43598sa89da98sd79adshuavusdva9sdguasd0 Đầu tiên, chúng ta sẽ tạo một $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save2 bằng cách sử dụng hàm const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]"0 của bcrypt. Ở đây, const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]"0 sẽ lấy một đối số là số const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]"2. Sau đó, nếu thành công, chúng tôi sẽ cung cấp kết quả để băm cùng với mật khẩu của chúng tôi Kết quả thành công, chúng ta sẽ nhận được hàm băm. Trong phương pháp này, chúng tôi đã sử dụng lời hứa $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save6 của JavaScript Bạn có thể thấy đầu ra như hình bên dưới sau khi kích hoạt Node const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]"4 hash('[email protected]') = 1b21hb2hb1u2gu3g2fxy1v2ux1v2y3vu12g4u3ggvgu43598sa89da98sd79adshuavusdva9sdguasd6 Băm này sẽ được lưu trữ trong cơ sở dữ liệu cùng với các chi tiết khác. Một điều nữa, bạn có nghĩ rằng tôi sẽ nhận được kết quả nếu tôi chạy lại mã không? Sử dụng hàm $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save 0 để băm mật khẩu trong Node. jsRõ ràng, không phải. const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]"6 sẽ tạo ra một hàm băm duy nhất dựa trên muối đặc biệt mỗi lần. Đó là cách nó ngăn chặn các cuộc tấn công bảng cầu vồng. Bây giờ, hãy xem xét phương pháp thứ hai hash('[email protected]') = 1b21hb2hb1u2gu3g2fxy1v2ux1v2y3vu12g4u3ggvgu43598sa89da98sd79adshuavusdva9sdguasd9 Ở đây, chúng tôi sẽ gọi hàm const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]"7 và chỉ cung cấp const bcrypt = require("bcrypt") const saltRounds = 10 const password = "[email protected]"2. Điều này cũng sẽ tạo ra một hàm băm duy nhất mỗi lần. Bây giờ, chúng ta sẽ xác thực hàm băm đó như thế nào? Vì vậy, đối với bcrypt đó, chúng tôi có hàm $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save0 sẽ đảm nhiệm phần đó $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save3 Nếu hash('[email protected]') = 1b21hb2hb1u2gu3g2fxy1v2ux1v2y3vu12g4u3ggvgu43598sa89da98sd79adshuavusdva9sdguasd00 là đúng, hàm băm do mật khẩu tạo cho nó được khớp Nút. thông tin băm mật khẩu js bcryptNhư bạn thấy ở cuối, bạn sẽ nhận được một hàm băm dài 60 ký tự $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save5 Sự phân nhánh của hàm băm là như thế này
Chi phí dữ liệu băm mật khẩuDữ liệu băm sẽ trải qua một chuỗi $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save4, dẫn đến một hàm băm an toàn không thể đoán trước đối với bất kỳ hệ thống hoặc người dùng nào. Sau đó, một mô-đun sẽ sử dụng một giá trị nhất định và thực hiện hash('[email protected]') = 1b21hb2hb1u2gu3g2fxy1v2ux1v2y3vu12g4u3ggvgu43598sa89da98sd79adshuavusdva9sdguasd09. Chi phí dữ liệu tùy chọn băm thường đề cập đến thời gian một vòng băm diễn ra, điều này phụ thuộc vào phần cứng của hệ thống Trên bộ xử lý lõi 2GHz, bạn có thể mong đợi những điều sau $ mkdir bcrypt_demo $ cd mkdir $ npm init -y $ touch app.js $ npm install bcrypt --save5 Lợi ích của việc băm mật khẩu trong Node. js với bcryptBcrypt có lợi thế đáng kể so với các phương pháp băm khác như MD5, SHA1, SHA2 và SHA3. Tất cả họ đều có thể thực hiện băm một số lượng lớn dữ liệu trong thời gian ngắn hơn. Giả sử kẻ tấn công có một hệ thống mạnh mẽ có khả năng thử 700-900 triệu mật khẩu trong vài giây. Mật khẩu của bạn chứa các giá trị chữ và số và ký tự đặc biệt sẽ bị bẻ khóa sau vài giây Hơn 200 nghìn nhà phát triển sử dụng LogRocket để tạo ra trải nghiệm kỹ thuật số tốt hơnVì vậy, bây giờ bạn biết rằng không thể sử dụng tất cả các phương pháp băm này để mã hóa mật khẩu. Bây giờ, câu hỏi chính là, làm thế nào để bcrypt cung cấp một lợi thế đáng kể ở đây? . Sau khi biết điều đó, bcrypt sẽ chậm hơn nếu kẻ tấn công thực hiện nhiều yêu cầu trong một khung thời gian. Vì vậy, nói chung, việc bẻ khóa một mật khẩu sẽ mất 12 năm chết tiệt Ngoài ra, bcrypt sử dụng muối, giúp ngăn chặn các cuộc tấn công như tấn công bảng cầu vồng và phù hợp để bảo mật mật khẩu Sự kết luậnNhư bạn đã biết, điều quan trọng là phải bảo mật dữ liệu để tránh thiệt hại đáng kể. Kẻ tấn công có thể tìm cách truy cập vào kho lưu trữ dữ liệu của bạn nhưng mật khẩu được mã hóa tốt sẽ gây lãng phí thời gian và công sức cho kẻ tấn công. Họ sẽ không nhận được bất kỳ lợi ích nào từ dữ liệu được mã hóa của bạn Nút. js cho phép chúng tôi sử dụng bcrypt mà không gặp trở ngại nào. Không có lý do gì để tránh nó khi xử lý mật khẩu của người dùng và các dữ liệu nhạy cảm khác. Một chức năng băm an toàn như bcrypt là cần thiết để tạo ra một hệ thống mạnh mẽ. Tôi đề nghị bạn sử dụng nó để lưu trữ mật khẩu. Bạn sẽ không phải đối phó với các vấn đề làm lộ thông tin nhạy cảm của người dùng nếu bạn đã thực hiện băm bằng bcrypt Chỉ dành cho 200 Theo dõi các yêu cầu mạng chậm và không thành công trong sản xuấtTriển khai trang web hoặc ứng dụng web dựa trên Node là phần dễ dàng. Đảm bảo phiên bản Node của bạn tiếp tục cung cấp tài nguyên cho ứng dụng của bạn là lúc mọi thứ trở nên khó khăn hơn. Nếu bạn quan tâm đến việc đảm bảo các yêu cầu đối với dịch vụ phụ trợ hoặc bên thứ ba thành công, hãy thử LogRocket.LogRocket giống như một DVR dành cho ứng dụng web và thiết bị di động, ghi lại mọi thứ diễn ra trong khi người dùng tương tác với ứng dụng của bạn theo đúng nghĩa đen. Thay vì đoán xem tại sao lại xảy ra sự cố, bạn có thể tổng hợp và báo cáo về các yêu cầu mạng có vấn đề để nhanh chóng hiểu nguyên nhân gốc rễ Làm cách nào để bảo mật mật khẩu trong JavaScript?Mã hóa và giải mã AES bằng Google Apps Script
. mã hóa (văn bản, cụm mật khẩu). toString();
Làm cách nào để mã hóa mật khẩu trong javascript bằng Base64?Mã hóa & giải mã bằng phương pháp Base64 trong React Native . nhập Phản ứng, { Thành phần } từ 'phản ứng'; mã hóa Mật khẩu = () => { var mã hóa = Base64. . decryptPassword = () => { var giải mã = Base64 Làm cách nào để mã hóa mật khẩu bằng JavaScript và giải mã bằng Java?Tiêu thụ khóa RSA Tạo AES ngẫu nhiên (khóa, iv, muối) - sử dụng tiền điện tử. js Sử dụng AES và mã hóa dữ liệu dễ bị tấn công Sử dụng khóa công khai RSA để mã hóa khóa AES Gửi dữ liệu và khóa được mã hóa qua mạng Dịch vụ tiêu thụ khóa giải mã dữ liệu cho AES Sử dụng khóa AES để giải mã dữ liệu Gửi dữ liệu trở lại giao diện người dùng Làm cách nào để tạo một chương trình mã hóa bằng JavaScript?Tạo mật mã của riêng bạn bằng Javascript . Dựa trên khóa riêng. Trong loại này, cùng một khóa được sử dụng để mã hóa cũng như giải mã. . Dựa trên khóa công khai. Trong loại này, hai phím khác nhau được sử dụng. . Phương pháp thay thế. Trong này, các ký tự được thay thế bằng một số ký tự khác gây khó đọc |