it-swarm-vi.com

Tại sao việc chuyển id phiên làm tham số url không an toàn?

Gần đây tôi đã theo dõi một cuộc thảo luận, trong đó một người nói rằng việc chuyển id phiên làm tham số url là không an toàn và thay vào đó nên sử dụng cookie. Một người khác nói ngược lại và cho rằng Paypal chẳng hạn, đang chuyển id phiên làm tham số url vì lý do bảo mật.

Là vượt qua id phiên làm tham số url thực sự không an toàn? Tại sao cookie an toàn hơn? Kẻ tấn công có những khả năng nào cho cả hai tùy chọn (cookie và tham số url)?

59
Jonathan Egerton

Là vượt qua id phiên làm tham số url thực sự không an toàn?

Mặc dù nó không vốn không không an toàn, nhưng nó có thể là một vấn đề trừ khi mã được thiết kế rất tốt.

Hãy nói rằng tôi ghé thăm diễn đàn yêu thích của tôi. Nó đăng nhập tôi và thêm ID phiên của tôi vào URL trong mỗi yêu cầu. Tôi tìm thấy một chủ đề đặc biệt thú vị và sao chép và dán URL vào một tin nhắn tức thì cho bạn tôi.

Trừ khi ứng dụng đã thực hiện các bước để đảm bảo rằng có một số hình thức xác thực trên ID phiên, người bạn đã nhấp vào liên kết đó may kế thừa phiên của tôi và sau đó có thể làm bất cứ điều gì tôi có thể làm, như tôi.

Bằng cách lưu trữ số nhận dạng phiên trong cookie, bạn loại bỏ hoàn toàn vấn đề chia sẻ liên kết.

Có một biến thể về chủ đề này được gọi là sửa lỗi phiên , liên quan đến việc chia sẻ cố ý của một định danh phiên cho mục đích xấu. Bài viết Wikipedia được liên kết đi sâu về cách thức hoạt động của cuộc tấn công này và cách nó khác với chia sẻ không chủ ý của mã định danh phiên.

Tại sao cookie an toàn hơn?

Cookies có thể an toàn hơn ở đây, vì chúng không phải là thứ mà người dùng bình thường có thể sao chép và dán, hoặc thậm chí xem và sửa đổi. Chúng là một mặc định an toàn hơn nhiều.

Kẻ tấn công có khả năng gì cho cả hai lựa chọn?

Cả hai của các phương thức này đều được bảo mật khỏi các cuộc tấn công trung gian đối với giao tiếp không được mã hóa. Các addon trình duyệt, phần mềm gián điệp và các tính năng khác phía máy khách cũng có thể theo dõi cả hai phương pháp lưu trữ định danh phiên.

Trong cả hai trường hợp, xác thực phía máy chủ mà máy khách tuyên bố sở hữu ID phiên là cách tốt nhất. Những gì xác nhận này bao gồm là tranh luận. Hãy nhớ rằng người dùng đằng sau proxy của công ty có thể nhảy giữa các địa chỉ IP giữa các yêu cầu, vì vậy việc khóa phiên thành địa chỉ IP có thể vô tình khiến mọi người xa lánh. sửa lỗi phiên bài viết đề cập đến một vài lựa chọn thay thế hữu ích khác.

76
Charles

Hầu hết các trang web lưu trữ trạng thái đăng nhập của người dùng của họ vào phiên và nếu kẻ tấn công có id phiên, anh ta cũng có các đặc quyền của người dùng đã đăng nhập. Nói cách khác, hai mối quan tâm của việc duy trì phiên và xác thực thường được kết hợp.

Một vấn đề là, rất dễ thực hiện sửa lỗi phiên các cuộc tấn công. Trong trường hợp này, kẻ tấn công sẽ gửi một URL đã chuẩn bị với id phiên đã biết cho người dùng. Nếu người dùng nhấp vào URL này và đăng nhập, kẻ tấn công sẽ có một phiên với các đặc quyền. Nếu trang web yêu cầu cookie, thì URL được chuẩn bị trong email sẽ không đủ.

Nếu một trang web sử dụng HTTP trộn với HTTPS, id sẽ được truyền văn bản gốc trong URL cho tất cả các yêu cầu HTTP (ngay cả đối với yêu cầu hình ảnh). Vì vậy, nếu kẻ tấn công có thể đọc một yêu cầu HTTP sau khi người dùng đã đăng nhập, anh ta sẽ biết id phiên.

Một cách thoát khỏi vấn đề sẽ là tách hai mối quan tâm, duy trì phiên và xác thực. Sau đó, bạn có thể để id phiên không được bảo vệ, chỉ để duy trì phiên và sử dụng cookie riêng để kiểm tra trạng thái đăng nhập. Cookie này phải được định cấu hình để chỉ được gửi đến các trang HTTPS.

23
martinstoeckli

Ngoài những gì Charles và Martin đã nói, việc đưa bất cứ thứ gì vào URL làm cho nhiều khả năng nó sẽ bị rò rỉ. Điều này có thể thông qua tiêu đề Người giới thiệu trong tài nguyên được liên kết, từ quyền truy cập đến điểm cuối với hồ sơ lịch sử trình duyệt, từ lịch sử đánh hơi vũ phu, nhật ký web được bảo vệ không phù hợp, v.v. Vì vậy, nói chung là không thể đặt bất cứ điều gì bạn muốn giữ bí mật trong chuỗi URL/truy vấn.

Tôi chưa thấy Paypal sử dụng ID phiên máy chủ trong URL. Không có cách nào nó thực sự an toàn hơn cookie; lý do nó thường được thực hiện trong quá khứ là để hỗ trợ các trình duyệt không bật cookie. Điều này ngày càng ít được quan tâm hơn và các vấn đề về khả năng không thể chia sẻ liên kết, ngoài các cuộc tấn công sửa lỗi phiên, có nghĩa là phiên URL thường được tránh ngày nay.

15
bobince

Một cái gì đó tôi đã thấy một vài năm trước là ai đó đã sao chép một URL (VỚI sessionid) vào Twitter. Tất cả người theo dõi sau đó có toàn quyền truy cập vào tài khoản của người đó trên trang web đó.

Vì vậy, có, đặt một sessionID trong URL là một ý tưởng tồi.

7
Niels Basjes