Một số thực tiễn tốt nhất để xác thực web dựa trên cookie là gì?


11

Tôi đang làm việc trên một dự án phụ nhỏ bằng CGI và Python (khả năng mở rộng không phải là vấn đề và nó cần phải là một hệ thống RẤT đơn giản.)

Tôi đã nghĩ đến việc thực hiện xác thực bằng cookie và tự hỏi liệu có bất kỳ thực tiễn tốt nhất nào được thiết lập hay không.

Khi người dùng xác thực thành công, tôi muốn sử dụng cookie để tìm ra ai đã đăng nhập. Điều gì, theo các thực tiễn tốt nhất, nên được lưu trữ trong một cookie như vậy?

Câu trả lời:


12

Trường hợp tốt nhất: Một ID duy nhất liên quan đến tất cả các thông tin khác bạn cần, lần lượt được lưu trữ trong cơ sở dữ liệu.

Có những lúc nó có ý nghĩa để đưa một số thông tin khác vào đó, nhưng chúng rất hiếm. Bạn luôn cần phải tự hỏi tại sao, ít nhất năm lần .

SSL sẽ bảo vệ người dùng của bạn khỏi bị tấn công phiên, nhưng ngay cả khi đó, không bao giờ lưu trữ thông tin nhạy cảm không được mã hóa trong cookie. Về cơ bản, nó được lưu trữ trong văn bản đơn giản trên ổ cứng.

Cuối cùng, và quan trọng nhất, bảo vệ người dùng của bạn khỏi các cuộc tấn công XSS và CSRF .

Việc bảo vệ XSS nói chung đơn giản như cẩn thận khi bạn đưa Javascript từ đâu, vì Javascript trên một máy chủ khác có thể bị thay đổi mà bạn không biết và Javascript này có quyền truy cập vào dữ liệu cookie. Vì vậy, nếu bạn đang sử dụng mạng phân phối nội dung của Evil Corp để phục vụ tập lệnh jQuery của bạn, họ có thể đột nhiên thêm mã để gửi cho họ cookie của người dùng của bạn. Bạn sẽ không biết; người dùng của bạn sẽ không biết.

Tải xuống các tập lệnh và phục vụ chúng từ máy chủ của bạn hoặc sử dụng các CDN rất đáng tin cậy như Google hoặc Yahoo.

Bảo vệ CSRF thường được thực hiện bằng cách có một giá trị ngẫu nhiên trong một trường ẩn trong một biểu mẫu. Giá trị được giữ trong phiên để khi biểu mẫu được gửi lại, bạn có thể xác minh nó đến từ cùng một máy tính.

Hầu hết các khung web hiện nay đều có các kỹ thuật rất đơn giản để bao gồm mã thông báo đó.


3
  • Sử dụng securehttpOnlycờ.
  • Mã hóa dữ liệu cookie phiên và ký mã hóa dữ liệu được mã hóa bằng MAC. Kiểm tra chữ ký tại máy chủ mỗi lần, trước khi bận tâm giải mã dữ liệu cookie phiên. (Rails thực hiện điều này theo mặc định.)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.