2009-06-05 31 views
5

Có thể hack các biến session của một ai đó và tạo một người dùng shadow mới không?Hacking các biến session trong Asp.NET

Cách phổ biến để tránh những tình huống như vậy là gì?

Cài đặt chứng chỉ SSL hoặc ....?

Trả lời

13

Câu trả lời ngắn ... phụ thuộc.

Phiên trong ASP.NET có thể được lưu trữ bằng nhiều cách (InProc/SQL Server/Máy chủ trạng thái) v.v ... một điều cần lưu ý khác là cách phiên khách được duy trì (giá trị chuỗi truy vấn, cookie, v.v. .)

Như tấm áp phích trong câu trả lời này cho thấy

Can we hack a site that just stores the username as a session variable?

Một điều bạn có thể làm khi bạn xác thực người dùng và lưu trữ tên của họ trong phiên, sẽ cũng để lưu trữ một số thông tin khác về họ. ví dụ. UserAgentString của họ, Địa chỉ IP của họ và nếu một IP khác hoặc UserAgentString cố tương tác với phiên, bạn có thể vô hiệu hóa nó.

+2

Một điều: lưu trữ IP với phiên là tốt, nhưng không dễ dàng, vấn đề là một hình thức phổ biến của tấn công phiên là chống lại ai đó trong cùng một nhóm IP (tức là trong một công ty hoặc AOL). Mối quan tâm tương tự cho UserAgent (chỉ với tính phổ biến cao hơn nhiều!) – annakata

1

Mọi thứ đều có thể, tuy nhiên theo mặc định thì rất khó.

Nói chung bạn cướp một phiên bằng cách ăn cắp cookie phiên và tạo lại nó trên một máy khác. Tuy nhiên để thực hiện điều này, trang web phải dễ bị tấn công bởi Cross Site Scripting (mà bạn có thể giảm thiểu so với Server.HtmlEncode khi bạn phản hồi lại đầu vào của người dùng). Nếu nếu bạn kết thúc dễ bị tấn công, cookie phiên ASP.NET được đánh dấu là HTTP Only, có nghĩa là, nếu một trình duyệt hỗ trợ nó, nó không thể truy cập từ các kịch bản phía máy khách (mặc dù Safari bỏ qua thiết lập này).

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