Hầu hết các trang web bạn có thể đăng nhập cũng cung cấp tính năng để nó ghi nhớ bạn giữa các phiên. Kỹ thuật được chấp nhận và an toàn để thực hiện điều đó là gì? (Bạn đặt gì vào cookie và cách bạn xử lý nó trên máy chủ/db?)Các kỹ thuật được chấp nhận để duy trì trạng thái đăng nhập vào trang web là gì?
Trả lời
Điều này gần đây 2009 chapter trong Spring Security 3.0 thảo luận về xác thực loại Remember-Me. Các khái niệm chung không dành riêng cho Spring Security để bạn có thể hưởng lợi từ nó ngay cả khi bạn không sử dụng nó. Chương này cũng trích dẫn bài đăngcủa Barry Jaspan, đây là một cải tiến so với các kỹ thuật được mô tả trong bài đăng 2004 blog của Charles Miller.
Các entry blog về cơ bản đi xuống đến:
Khi người dùng đăng nhập thành công với Ghi nhớ kiểm tra, một cookie đăng nhập được ban hành, thêm vào các tập tin cookie quản lý chuẩn của phiên.
Cookie đăng nhập chứa tên người dùng, số nhận dạng chuỗi và mã thông báo. Chuỗi và mã thông báo là các số ngẫu nhiên không thể tránh khỏi từ một không gian lớn phù hợp. Cả ba được lưu trữ cùng nhau trong một bảng cơ sở dữ liệu.
Khi người dùng không đăng nhập truy cập trang web và hiển thị cookie đăng nhập, tên người dùng, chuỗi và mã thông báo được tra cứu trong cơ sở dữ liệu.
- Nếu bộ ba có mặt, người dùng được coi là được xác thực. Mã thông báo đã sử dụng được xóa khỏi cơ sở dữ liệu. Một mã thông báo mới được tạo ra, được lưu trữ trong cơ sở dữ liệu với tên người dùng và cùng một số nhận dạng, và một cookie đăng nhập mới chứa tất cả ba được cấp cho người dùng.
- Nếu tên người dùng và chuỗi có mặt nhưng mã thông báo không khớp, hành vi trộm cắp được giả định. Người dùng nhận được cảnh báo mạnh mẽ và tất cả các phiên nhớ của người dùng sẽ bị xóa.
- Nếu không có tên người dùng và chuỗi, cookie đăng nhập sẽ bị bỏ qua.
Chỉ là một cookie có giá trị lâu dài được gán. Tuy nhiên, nó sẽ chỉ hoạt động miễn là cookie tồn tại. Ví dụ, tôi có Firefox của tôi thiết lập để xóa cookie của tôi khi tôi đóng trình duyệt. Vì vậy, điều này sẽ không làm việc cho tôi.
Vâng, tôi giả sử bạn làm điều gì đó nhiều hơn một chút thông minh hơn thứ tiếng nói, hex mã hóa, tên người dùng trong một cookie ..? – nos
Id người dùng trong một cookie và sau đó mật khẩu được mã hóa sẽ hoạt động. Tôi sẽ không lưu trữ tên người dùng vì chúng thường được người dùng khác của trang web biết đến và do đó dễ tái tạo. Mặc dù bạn có thể mã hóa tên người dùng và sử dụng mật khẩu làm khóa bảo mật hơn rất nhiều. – IllusivePro
Đặt ID phiên hoặc một số băm duy nhất trong cookie. Lưu trữ phía máy chủ. Người dùng của anh ta trả về, bạn có thể tra cứu anh ấy trong DB. –
Cookie, nhưng người dùng có thể quyết định xóa nó.
Trong cùng tinh thần, có một số loại giải pháp, sử dụng Flash. Flash có thể lưu trữ thông tin về phía máy khách, không phải cookie, nó không bị xóa (thường) bởi trình duyệt. Với nó, bạn có thể nhớ người dùng nào đang yêu cầu các trang nhưng bạn bị kẹt bằng cách sử dụng giải pháp sử dụng plugin và cần biết Flash ..
Tôi không thấy bất kỳ giải pháp nào khác.
Signed cookie mà không thể giả mạo có thể là một ý tưởng tốt khi bạn không cần một tổng thể server-side bang ... bình nạc và hiệu quả.
Bạn vẫn có nguy cơ bị trộm cắp cookie nhưng bạn luôn có thể đăng nhập cookie bằng địa chỉ IP, Tác nhân người dùng và những thứ khác để giúp giảm thiểu mối đe dọa.
Khó truy cập trộm cắp cookie, vì người dùng phải bảo mật máy tính của mình:/ –
Nhưng bạn có thể xác thực rằng cookie chưa chuyển sang môi trường khác theo một số cách. –
Việc đăng nhập cookie theo một cách nào đó là quan trọng. Nếu không, ai đó có thể dễ dàng sao chép giá trị cookie và sử dụng nó trên một máy khác. Ngoài ra, điều này có vẻ như thông thường, nhưng không lưu trữ giá trị cookie dưới dạng văn bản thuần túy. Mã hóa nó theo một cách nào đó để khó giả mạo hơn. Tôi đã thấy các nhà thiết kế web rất mới làm quen với quá đáng tin cậy với các giá trị cookie. –
Đừng cố tự mình triển khai cookie phiên.
Hầu hết các khung công tác web cung cấp cho bạn một trừu tượng về điều này, để lại cho bạn sự quan tâm về nhiều vấn đề bảo mật mà bạn có thể đang tự phơi bày.
Một API đơn giản trong pseudo-code trong một khuôn khổ web có thể trông giống như thế này, trong lần đăng nhập:
authFrwk.loginUser(request.POST.get(username), request.POST.get(password));
này sẽ trở lại một cookie cho khách hàng (xử lý độc quyền bởi khuôn khổ).
Một hoạt động một cách an toàn có thẩm quyền sẽ xem xét một cái gì đó như thế này:
if (authFrwk.isLoggedOn()) // implicitly checks user session cookie
doSomethingImportant();
else
return notLoggedInMsg();
Về cơ bản, một cookie phiên được đưa ra một ID duy nhất trên server-side, mà một người sử dụng malacious không thể tạo/đoán bởi chính mình, và đó xác định khách hàng là người dùng đã đăng nhập.
- 1. Đăng nhập theo chương trình và duy trì trạng thái đăng nhập
- 2. Android: đăng nhập vào trang web và duy trì phiên/cookie bằng cách sử dụng DefaultHttpClient
- 3. Kỹ thuật tốt để xử lý thay đổi trạng thái và trạng thái trong phát triển trò chơi là gì?
- 4. Moodle Chấp nhận Đăng nhập từ trang bên ngoài
- 5. Cách duy trì trạng thái trước đó của hoạt động
- 6. Đăng nhập vào trang web bằng python
- 7. Tự động đăng nhập vào trang web hiện tại nếu người dùng đăng nhập vào một trang web khác
- 8. đăng nhập vào trang web bằng HTMLAgilityPack
- 9. Đăng nhập vào trang web qua C#
- 10. Trạng thái Trident trong Storm là gì?
- 11. Đăng nhập vào trang web với java
- 12. Trạng thái của Spring.Net là gì?
- 13. Kiểm tra trạng thái đăng nhập ở phía máy khách
- 14. Trạng thái của PHPDoc là gì?
- 15. Cách tốt nhất để viết ứng dụng duyệt web có thể duy trì là gì?
- 16. Trạng thái hiện tại của nghệ thuật trong khung công tác web Haskell là gì
- 17. Làm việc với các trang web một trang và duy trì trạng thái bằng cách sử dụng một băm URL và jQuery
- 18. Subclipse bỏ qua "Chấp nhận vĩnh viễn" khi hộp thoại "Chấp nhận chứng chỉ kỹ thuật số" được hiển thị
- 19. Đăng nhập vào trang web bằng Cơ chế và Nokogiri?
- 20. Không gian trạng thái là gì?
- 21. Trạng thái cũ là gì?
- 22. Trạng thái của JMX 2.0 là gì?
- 23. Trạng thái Lua là gì?
- 24. Làm thế nào để duy trì trạng thái của ViewPager trong một ListView?
- 25. Lỗi trạng thái HTTP 403 từ glassfish 3 khi cố gắng truy cập trang đăng nhập được thực hiện
- 26. Cách duy trì trạng thái trên các phiên người dùng khác nhau trong ứng dụng vòng
- 27. Đăng nhập vào trang web từ xa bằng PHP cURL
- 28. Giao diện điều khiển ứng dụng để đăng nhập vào trang web ASP.NET
- 29. JMeter không thể đăng nhập vào trang web - JMeter noob
- 30. Dịch vụ web là phi trạng thái?
Các bài đăng trên blog đó thực sự thú vị – nos