tài Grom có một câu trả lời tuyệt vời ở đây đề cập đến cách để giúp đảm bảo phiên của bạn trong PHP : https://stackoverflow.com/a/7488/3874219
Tôi muốn bắt đầu bằng cách nói rằng PHP, đặc biệt là 5.x.x phiên bản, đã đi một chặng đường dài trong an ninh; tuy nhiên, vẫn còn nhiều điều tiềm năng có thể xảy ra với dữ liệu phiên của bạn, vì nó được truyền liên tục giữa máy chủ của bạn và máy khách. Hãy giải quyết 4 điểm cá nhân của bạn:
'nên người dùng bây giờ di chuyển từ mysite.com, để devious-site.com, là Có cách nào mà ai đó có thể lấy dữ liệu từ 'basic_variable', chỉ bằng cách biết rằng biến được gọi là? '
Vốn có, không. Các biến và tên biến của bạn được lưu trữ trên máy chủ của bạn và bởi vì mã được xử lý thành chế độ xem HTML trước khi được gửi tới máy khách, mã PHP của bạn không bao giờ tiếp cận khách hàng. Dữ liệu được lưu trữ trong các biến không được truyền cho khách hàng là an toàn trên máy chủ của bạn, được cấp cho ai đó không có quyền truy cập vào máy chủ của bạn hoặc theo cách nào đó làm tổn hại đến bảo mật của máy chủ của bạn. Nếu dữ liệu của bạn trong biến đã cho được lưu trữ trong một phiên hoặc cookie được chuyển qua mạng/mạng đến máy khách, nó có khả năng bị chặn. Lưu lượng truy cập này không được mã hóa theo mặc định, trừ khi bạn đã triển khai OpenSSH thông qua chứng chỉ SSL hoặc lược đồ mã hóa tương tự.
'Có cách nào để người dùng hiện tại có thể xem bản in ra khỏi biến số $ _SERVER và thực sự thấy tất cả nội dung được lưu trữ trong đó không?'
Nếu bạn 'echo' hoặc lập trình PHP để hiển thị dữ liệu được lưu trữ trong đó. Một lần nữa, nếu biến được đặt ở đâu đó khi nó được gửi tới máy khách và không được xử lý thành HTML hoặc được xử lý trước khi một phản hồi HTTP được gửi đi, thì nó có nguy cơ.
'Tôi đọc ở đâu đó dữ liệu trong phiên hoặc trong cookie phải là "được mã hóa". Trong ví dụ trên, tôi khá chắc chắn dữ liệu đang được lưu trữ trong phiên và phiên này được bảo mật. Đây có phải là trường hợp hoặc chỉ an toàn nếu HTTPS được bật? '
Vâng, HTTPS phải được kích hoạt, và bạn phải có một giấy chứng nhận SSL để mã hóa dữ liệu, nếu không tất cả mọi thứ trong mã hóa các yêu cầu HTTP/trả lời của bạn tùy thuộc vào đánh hơi, các cuộc tấn công cross-site scripting, rèn miền, các cuộc tấn công chuyển hướng , Và danh sách được tiếp tục. SSL chắc chắn giúp ngăn chặn nhiều điều này.
'Drupal lưu trữ một số thông tin trong cookie, nếu bạn chọn sử dụng cookie là được áp dụng cho "phiên", điều đó ảnh hưởng như thế nào ở trên?'
Cookie được lưu trữ trên máy của người dùng. Dữ liệu trong các tập tin cookie có thể được mã hóa hoặc băm bởi máy chủ của bạn để nó được lưu trữ an toàn, nhưng mọi thứ đều có thể. Nếu một hacker tiềm năng giả mạo miền của bạn, họ sẽ có quyền truy cập vào các cookie và mọi thứ trong đó. Nếu cookie liên kết đến một phiên hoạt động, họ vừa giả mạo danh tính của họ và truy cập vào trang web của bạn với phiên của nạn nhân. Poof. Nhận dạng trộm cắp, chỉnh sửa độc hại nội dung người dùng, vv Drupal chắc chắn đã có đủ lâu để có cơ chế để ngăn chặn điều này; tuy nhiên, tôi không phải là chuyên gia Drupal.
Hy vọng rằng sẽ làm sáng tỏ. Thực hành tốt nhất IMO, không lưu trữ dữ liệu nhạy cảm trong phiên! Nếu bạn đang lưu trữ thông tin nhận dạng trong cookie của mình, hãy đảm bảo bạn có một số loại triển khai để ngăn chặn giả mạo trang web, ví dụ: trong ASP.NET MVC tôi sử dụng một mã thông báo Anti-Forgery được cung cấp trong khung công tác.Bạn muốn có một cách để đảm bảo rằng người đó tuyên bố là họ là ai thông qua cookie có một cách khác để xác minh yêu cầu với cookie đã nói có nguồn gốc TỪ TRANG WEB/DOMAIN của bạn và không phải là một cookie khác.