2011-12-09 41 views
6

Làm cách nào để tăng tính bảo mật cho các phiên của tôi?Bảo mật phiên mã hóa

$this->session->userdata('userid') 

Tôi đã ném cậu bé xấu này xung quanh cuộc gọi ajax của tôi. Một số trường hợp tôi không có. Sau đó, tôi đã như thế, là điều này thực sự an toàn bằng cách sử dụng id từ DOM? nếu DOM bị thay đổi để hack dữ liệu tài khoản người dùng thì sao? Vì vậy, sau đó tôi đã như tôi đoán bất cứ lúc nào một người dùng đang làm một cái gì đó liên quan đến id của họ, chỉ có phiên nên được tham chiếu. Tôi có đúng không?

Được tham chiếu như vậy:

$this->some_model->do_data_stuff($dataId, $this->session->userdata('userid')); 

Sau đó, tôi đọc:

Trong khi các mảng dữ liệu phiên lưu trữ trong cookie của người dùng chứa một Session ID, trừ khi bạn lưu trữ dữ liệu phiên trong một cơ sở dữ liệu không có cách nào để xác thực. Đối với một số ứng dụng đòi hỏi ít hoặc không có bảo mật, xác thực ID phiên có thể không cần thiết, nhưng nếu ứng dụng của bạn yêu cầu bảo mật, việc xác thực là bắt buộc. Nếu không, một phiên bản cũ có thể được khôi phục bởi người dùng sửa đổi cookie của họ. http://codeigniter.com/user_guide/libraries/sessions.html

Tôi sẽ không được lưu trữ dữ liệu tài chính nhưng tôi không muốn bất kỳ dữ liệu trên trang web của tôi bị hỏng bao giờ hết. SO có sử dụng xác thực phiên không? Chi phí xác nhận này sẽ mất bao nhiêu tiền? Một phiên bị tấn công như thế nào? Một số điều cần tìm ra với bảo mật phiên là gì?

Trả lời

18

Sử dụng các phiên CodeIgniter với cơ sở dữ liệu sẽ khá an toàn. Bạn không cần phải tin tưởng đầu vào mà người dùng cung cấp. Ngay cả khi bạn đang sử dụng AJAX, phiên CodeIgniter sẽ hoạt động giống như bất kỳ cuộc gọi chuẩn nào, vì vậy bảo mật tương tự sẽ diễn ra.

Điều gì sẽ xảy ra với phiên CodeIgniter là máy chủ lưu trữ cookie và mỗi khi người dùng thực hiện hành động thay đổi nội dung của cookie, nó sẽ được so sánh với cookie trước đó.

Nếu người dùng thay đổi nội dung của cookie phiên trong trình duyệt, CodeIgniter sẽ thông báo về cuộc gọi máy chủ tiếp theo và tạo phiên mới cho người dùng, về cơ bản đã đăng xuất.

CodeIgniter không thực sự cần các dữ liệu được lưu trữ trong cookie trong trình duyệt của người dùng, và miễn là bạn đang sử dụng

$this->session->userdata('userid'); 

bạn đang đi để có được dữ liệu phía máy chủ đáng tin cậy. Người dùng không thể thay đổi điều đó. Hơn nữa, cookie có thể được mã hóa và bạn nên mã hóa nó. Chỉ cần nhìn vào config.php của CodeIgniter.

Có một số biện pháp bảo vệ khác xung quanh dữ liệu phiên: thời gian chờ làm mới ngắn (thường là 300 giây), nó sẽ kiểm tra xem IP có thay đổi hay không, và nếu trình duyệt thay đổi. Nói cách khác, trong trường hợp xấu nhất, cách duy nhất để giả mạo dữ liệu phiên là bằng cách có cùng phiên bản trình duyệt, có cùng IP, truy cập trực tiếp vào máy tính để sao chép/dán cookie và thực hiện việc này trong vòng 5 phút.

Vì vậy, hãy chú ý đến người ngồi bên cạnh bạn!

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