2015-01-12 12 views
6

Tôi đã nghe nói về tập lệnh chéo trang web và mọi người có thể truy cập cookie và các cách gây rối. Vì vậy, tôi đã hy vọng rằng ai đó có thể trả lời một số câu hỏi xung quanh. Tôi muốn lấy ví dụ về lưu trữ một cái gì đó trong phiên một cách tinh khiết nhất, nhưng sử dụng một CMS như Drupal. Hãy nói rằng chúng tôi có điều này:Rủi ro trong việc lưu trữ dữ liệu trong phiên là gì?

$data = $fancyWebService->getSuperSecureDataThatOnlyTheCurrentlyLoggedInUserCanSee(); 
$_SESSION['basic_variable'] = $data; 
  1. nên người dùng bây giờ di chuyển từ mysite.com, để devious-site.com, có cách nào mà ai đó có thể lấy dữ liệu từ "basic_variable", chỉ bằng cách biết biến được gọi là?
  2. Có cách nào để người dùng hiện tại có thể xem bản in ra khỏi biến $ _SERVER và thực sự thấy tất cả nội dung được lưu trữ trong đó không?
  3. Tôi đọc ở đâu đó rằng dữ liệu trong phiên hoặc trong cookie phải đượ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à rằng phiên này là an toàn. Đây có phải là trường hợp, hoặc là nó chỉ an toàn nếu HTTPS được kích hoạt?
  4. Drupal lưu trữ một số thông tin trong cookie, nếu bạn chọn sử dụng cookie như được đề xuất cho "phiên", điều đó ảnh hưởng như thế nào ở trên?

CẬP NHẬT

Liên quan đến câu hỏi 2. Ý tôi là, nếu tôi gõ như sau trong một file php:

print '<pre>'; 
print_r($_SESSION); 
die(); 

(hoặc chỉ vardump biến phiên) ...

Tôi kết thúc với tất cả thông tin tôi đã lưu trữ ở đó, không được mã hóa. Câu hỏi của tôi là, có cách nào người dùng bằng cách nào đó có thể tìm cách truy cập vào biến phiên (không phải là thông qua tôi phơi bày nó) mà có thể làm cho ý tưởng tồi là để lại các giá trị không được mã hóa?

Trả lời

6

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.

1

Cookie chỉ có thể truy cập được bằng miền được lưu trữ nơi cookie đến. hijacking phụ thuộc vào mạng.

3

ID phiên được lưu trữ trong cookie của khách hàng và không có miền nào khác có thể truy cập cookie của miền khác và hai máy chủ tương tự (hai trang web) không thể xem phiên của nhau (cho đến khi bạn lưu trữ trong máy chủ chia sẻ)

1: Với cách tiếp cận chung thì không thể, nhưng có cách - Để làm cho phiên của bạn có sẵn trên nhiều trang web, bạn phải lưu phiên trên máy chủ thông thường và phải chuyển id phiên của bạn trên mỗi GET/POST vars. Viết session_save_handler của riêng bạn và lưu các phiên trong cơ sở dữ liệu. Cơ sở dữ liệu có thể được truy cập từ nhiều máy chủ web và bạn đã hoàn tất.

2: Câu hỏi không rõ ràng.

3: Có https có thể bảo vệ bạn khỏi bị chiếm đoạt phiên.

4: Câu hỏi là chút không rõ ràng, hãy làm theo url này để có được sự khác biệt/liên quan giữa phiên & Cookie

http://viveksoni.net/how-session-works-what-is-session/

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