Mã của bạn có vẻ an toàn, nhưng thiết kế của bạn có thể cần một số công việc.
SQL Injection
Phần nguy hiểm của mã này là trong việc lưu trữ bất cứ điều gì trong cơ sở dữ liệu, hoặc hiển thị bất cứ điều gì cho người sử dụng, được thu thập từ người dùng. Vì vậy, phần bạn phải cẩn thận xảy ra trước khi ví dụ của bạn. Đảm bảo rằng bạn đang xác thực, lọc và thoát bất kỳ dữ liệu nào bạn thu thập từ người dùng, bao gồm mật khẩu và thông tin quảng cáo.
Encryption
Ưu điểm của việc lưu trữ mật khẩu trong cơ sở dữ liệu là bạn có thể cho phép người dùng lấy lại mật khẩu qua email hoặc một số phương tiện khác nếu họ đánh mất nó. Tuy nhiên, nếu bạn lưu mật khẩu, bạn nên lưu trữ chúng mã hóa, sử dụng khóa bí mật, để nếu ai đó có thể đọc trực tiếp quyền truy cập đọc vào cơ sở dữ liệu của bạn, họ không thể đọc tất cả mật khẩu ở dạng văn bản thuần túy. Tuy nhiên, bạn sẽ phải lưu trữ khóa bí mật ở đâu đó và nếu ai đó lấy khóa bí mật của bạn và có quyền truy cập vào cơ sở dữ liệu của bạn, họ sẽ có quyền truy cập vào tất cả các mật khẩu.
giá trị Hash (recommended)
Đó là thực hành tốt nhất và an toàn hơn để chỉ lưu trữ một giá trị băm chiều (SHA1 hoặc SHA256) của mật khẩu trong cơ sở dữ liệu thay cho mật khẩu thực tế. Bằng cách này, bạn không thể lấy lại mật khẩu. Giá trị băm cố ý một cách bằng cách vứt bỏ một số dữ liệu.
Thay vì truy xuất mật khẩu ban đầu, bạn băm mật khẩu mà người dùng nhập và so sánh giá trị băm với giá trị băm được lưu trữ để xem nó có khớp không. Nếu người dùng mất mật khẩu trong trường hợp này, thay vì gửi email mật khẩu cho người dùng, bạn gửi email cho người dùng mật khẩu mới, được tạo ngẫu nhiên.
Lưu trữ chỉ giá trị băm bảo vệ dữ liệu của bạn hơn nữa, vì ngay cả khi người dùng có quyền truy cập đọc vào cơ sở dữ liệu của bạn, giá trị băm không có lợi thế và không có khóa bí mật nào mở khóa tất cả giá trị băm của bạn.
Khi bạn băm mật khẩu, hãy đảm bảo sử dụng giá trị muối ngẫu nhiên và lưu trữ muối để bảo vệ danh sách băm chống lại các cuộc tấn công của cầu vồng.
Tóm tắt
Đôi khi bạn không nhận được để chọn mật khẩu. Đôi khi mật khẩu đến từ một hệ thống khác, vì vậy bạn không luôn có lựa chọn và đôi khi cấp trên của bạn (thậm chí có thể là người dùng) sẽ yêu cầu họ có thể truy xuất mật khẩu, tuy nhiên, khi có thể, bạn nên chọn tùy chọn bảo mật hơn .
Lưu ý rằng tất cả hoạt động mã hóa và giá trị băm này chỉ bảo vệ một phần máy chủ của bạn khỏi những người có thể nhận quyền truy cập chỉ đọc vào dữ liệu của bạn. Đôi khi, việc nhận dữ liệu của bạn đủ để nhận giải thưởng, vì vậy nếu người dùng có thể đọc mật khẩu băm, họ có thể đọc số thẻ tín dụng của bạn không?
Bạn cần bảo vệ cơ sở dữ liệu của mình. Bạn có mật khẩu an toàn trên hệ thống cơ sở dữ liệu của mình không? Bạn chỉ cho phép truy cập cục bộ vào dữ liệu của mình? Bạn đã tạo một người dùng cơ sở dữ liệu với ít đặc quyền để sử dụng trong ứng dụng của bạn chưa? Bạn có bảo vệ chính mình khỏi các cuộc tấn công SQL injection và scripting không?
Nếu ai đó đã đọc và ghi quyền truy cập vào dữ liệu của bạn, toàn bộ doanh nghiệp mật khẩu sẽ trở thành tranh luận.
tel Hãy l tôi bạn đã không lưu mật khẩu thực tế của họ trong MySQL ... – animuson
vâng tôi làm, nhưng hey, trang web chưa trực tuyến, đang được phát triển ... Tôi chỉ mới bắt đầu ở mặt trận bảo mật ngay bây giờ ... Tôi lưu nó sau đó? –
@animuson có quan trọng đối với trang web rao vặt không? –