2012-04-10 28 views
15

Tôi đang xây dựng trang web yêu cầu xác thực và ủy quyền người dùng. Ý tưởng ban đầu của tôi là viết ứng dụng bằng cách sử dụng khung công tác Flask. Tuy nhiên, I learned that Flask doesn't have a built in authentication system. Nó có một mở rộng bình-đăng nhập, nhưng tôi đã không nhận được bất kỳ xác nhận là liệu phần mở rộng này là tốt bằng văn bản. Tôi đã đọc rằng rất dễ để xác thực sai.Đưa ra một hệ thống xác thực web

  1. Có thể là một ý tưởng hay khi chuyển sang thứ gì đó như Django hoặc web2py, đã tích hợp sẵn trong hệ thống xác thực?

  2. Các lập trình viên web tốt thường chọn sử dụng các hệ thống xác thực thực sự và cố gắng thay vì cố gắng tự triển khai?

  3. Có hướng dẫn tốt nào thể hiện các phương pháp hay nhất liên quan đến việc xây dựng hệ thống xác thực/ủy quyền không?

Xin cảm ơn các bạn!

+5

Không bao giờ, không bao giờ, không bao giờ cố gắng cuộn lược đồ xác thực của riêng bạn. +1 để đặt câu hỏi. –

+0

Bạn có bất kỳ yêu cầu đặc biệt nào (chẳng hạn như đăng nhập một lần) hay bạn chỉ muốn xác thực tên người dùng/mật khẩu cơ bản trên một trang HTTPS? –

+2

@AdamLiss Trừ khi bạn biết bạn phải làm thế nào, và bạn hiểu cách làm cho nó thực sự mạnh mẽ và người khác đang trả tiền cho bạn. – Marcin

Trả lời

6

Nếu bạn muốn thêm khả năng đăng nhập của người dùng vào trang web của mình (nghĩa là, xác thực và ủy quyền) sử dụng khung hiện có. Trừ khi bạn là chuyên gia về bảo mật, xác suất viết văn bản bảo mật gần bằng 0. Điều này áp dụng bất kể ngôn ngữ bạn lập trình và bất kể khung bạn đang sử dụng.

Thật không may, tôi đã thấy mọi người trả lời câu hỏi này như sau: "Đây không phải là khó, và thú vị để mã, như một người mới bắt đầu. Bạn cần một nơi để lưu trữ dữ liệu của bạn (giả sử một cơ sở dữ liệu mysql). lưu trữ các phiên bản ENCRYPTED của mật khẩu, v.v. " Câu trả lời này là KHÔNG HOÀN THÀNH HOÀN THÀNH.

Có sẵn các khuôn khổ xác thực miễn phí, SỬ DỤNG THEM. Ví dụ, Django và web2py có tích hợp hệ thống xác thực. Nhiều khung công tác không đi kèm với xác thực được tích hợp sẵn (ví dụ: Flask, webpy); điều này không có nghĩa là bạn nên triển khai khuôn khổ của riêng mình. Nó chỉ có nghĩa là bạn nên tìm phần mềm xác thực của bên thứ 3. Đối với Flask, có Flask-login.

Vì vậy, câu trả lời cho câu hỏi ban đầu của tôi là:

1.) Có hoặc tích hợp hệ thống phần mềm bên thứ ba đã xác minh.

2.) Có, các phương pháp hay nhất nói KHÔNG VIẾT HỆ THỐNG XÁC THỰC CỦA BẠN. Sử dụng một cái đã được tạo sẵn.

3.) Bạn không cần hướng dẫn xây dựng hệ thống xác thực vì bạn không nên xây dựng hệ thống xác thực. Tuy nhiên, OWASP là một tài nguyên bảo mật tuyệt vời.

Dưới đây là tóm tắt ngắn gọn: Không viết hệ thống xác thực của riêng bạn. Sử dụng hệ thống xác thực được xây dựng trước được tin cậy. Nếu bất kỳ ai có bất kỳ đề xuất nào cho các hệ thống xác thực có thể được sử dụng với Python, hãy đăng chúng.

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