2008-12-10 26 views
27

Cách tốt nhất để xác thực và theo dõi trạng thái xác thực người dùng từ trang này sang trang khác là gì? Một số người nói trạng thái phiên, một số nói cookie?Trạng thái xác thực web - Phiên so với cookie?

Tôi có thể sử dụng biến phiên có ID của người dùng và khi xác thực, instatiate một lớp người dùng tùy chỉnh có thông tin của người dùng. Sau đó, trên mọi trang, xác minh biến phiên vẫn hoạt động và truy cập dữ liệu người dùng cơ bản từ đối tượng Người dùng?

Mọi suy nghĩ? Bất kỳ ví dụ tốt nào?

+0

Bạn đã xem xét sử dụng xác thực biểu mẫu aspnet tích hợp chưa?Nó sử dụng cookie nhưng khá mạnh mẽ về an ninh và sẽ làm giảm bớt rất nhiều công việc. –

+0

Thật tuyệt, nhưng tôi cần xác minh một vài điều khác về người dùng từ cơ sở dữ liệu. Nó có thể làm được không? – Bill

+0

có, bạn có thể lưu trữ bất kỳ thứ gì trong dữ liệu hồ sơ của người dùng. nếu bạn không chắc chắn về cách tạo hệ thống người dùng của riêng mình, tôi sẽ chỉ làm điều đó nếu các tác động bảo mật thấp – Shawn

Trả lời

16

Không có hoàn hảo cách để làm điều đó. Nếu bạn lưu trữ nó trong một cookie bạn sẽ mất flak rằng cookie có thể bị đánh cắp. Nếu bạn lưu trữ nó trong phiên, bạn sẽ mất flak vì phiên có thể bị tấn công.

Cá nhân, tôi có xu hướng nghĩ rằng một phiên là đáng tin cậy hơn một chút vì điều duy nhất được lưu trữ trên máy khách là khóa phiên. Dữ liệu thực tế vẫn còn trên máy chủ. Nó chơi các thẻ gần hơn một chút với ngực, nếu bạn muốn. Tuy nhiên, đó chỉ là sở thích của tôi, và một hacker giỏi sẽ có thể vượt qua được sự an toàn quá mức bất kể.

Bất kể bạn làm gì, đừng cố tự mình triển khai. Bạn sẽ hiểu sai. Sử dụng hệ thống xác thực do nền tảng cụ thể của bạn cung cấp. Bạn cũng cần đảm bảo rằng bạn có các biện pháp phòng ngừa an toàn đầy đủ bảo vệ mã thông báo xác thực.

+1

đó là sai, vì cookie có thể bị tấn công và phiên có thể bị đánh cắp (vì nó thường được thực hiện trừu tượng trên các cookie đơn giản)) –

+5

Điều này không có ý nghĩa, bởi vì bạn cướp một phiên bằng cách ăn cắp một cookie. Vì vậy, vấn đề tương tự của nó không có vấn đề gì. –

+0

Tôi chỉ đọc ở đâu đó mà bạn có thể sử dụng kết hợp cả hai. –

1

Tôi không biết nếu cách TỐT NHẤT của nó để làm điều đó, nhưng chúng tôi cảm thấy thoải mái với cách chúng tôi làm điều đó.

chúng tôi có đối tượng người dùng tùy chỉnh mà chúng tôi khởi tạo khi người dùng xác thực, sau đó chúng tôi sử dụng Phiên để duy trì đối tượng này trên ứng dụng.

Trong một số ứng dụng, chúng tôi kết hợp nó với việc sử dụng cookie để kéo dài phiên liên tục.

25

Vấn đề với các phiên ưu tiên trên cookie cho 'bảo mật' là phiên sử dụng cookie để xác định người dùng, do đó, mọi vấn đề với cookie đều có trong phiên.

Một điều cần lưu ý khi sử dụng Phiên là vị trí dữ liệu. Nếu bạn có kế hoạch chia tỷ lệ cho nhiều máy chủ web tại bất kỳ thời điểm nào, bạn cần lưu trữ rất cẩn thận lượng lớn dữ liệu trong các đối tượng phiên.

Vì bạn đang sử dụng .NET, về cơ bản bạn phải viết nhà cung cấp cửa hàng phiên của riêng mình để xử lý việc này, vì InProc sẽ không vượt quá 1 máy chủ, nhà cung cấp DB chỉ là một ý tưởng tồi hoàn toàn (Toàn bộ vấn đề là để AVOID DB đọc ở đây trong khi mở rộng quy mô, không thêm nhiều hơn), và StateServer có rất nhiều vấn đề về dung lượng. (Trong quá khứ, tôi đã sử dụng một nhà cung cấp cửa hàng phiên memcached với một số thành công để chống lại vấn đề này).

Tôi sẽ google cho cookie đã ký và xem xét việc sử dụng cookie thay vì cookie hoặc phiên thông thường. Nó giải quyết rất nhiều mối quan tâm về bảo mật và loại bỏ các vấn đề địa phương với các phiên. Hãy nhớ rằng họ quay trở lại và ra trên mọi yêu cầu, do đó, lưu trữ dữ liệu một cách tiết kiệm.

+1

Bạn có thể có các phiên không cần thiết trong bất kỳ nền tảng nào. .NET cũng cung cấp cho nó hộp của chúng tôi. –

+0

Bộ nhớ cache được phân phối của AppFabric để lưu trữ phiên làm việc như thế nào? –

+9

@esteban Các phiên Cookieless đặt ID phiên trong URL. Tôi để nó theo trí tưởng tượng của bạn về việc liệu điều này là nhiều hơn/ít hơn/cũng không an toàn như sử dụng cookie. –

0

Cookie và phiên của mình không thực sự đủ. Chúng là công cụ để sử dụng để theo dõi người dùng và những gì họ làm, nhưng bạn thực sự cần phải suy nghĩ về việc sử dụng cơ sở dữ liệu để duy trì thông tin về người dùng cũng có thể được sử dụng để bảo mật ứng dụng.

-2

Phiên là Cookie ...

+5

Không, không. Chỉ cần đọc phần còn lại của các ý kiến. – serverhorror

+0

@ServerHorror Vâng, chúng là loại .. –

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