Hướng dẫn which php function is useful in managing session hijacking? - chức năng php nào hữu ích trong việc quản lý việc chiếm quyền điều khiển phiên?

Chương này thảo luận về các phiên và các rủi ro vốn có liên quan đến các ứng dụng web trạng thái. Trước tiên bạn sẽ tìm hiểu các nguyên tắc cơ bản của nhà nước, cookie và phiên; Sau đó, tôi sẽ thảo luận về một số mối quan tâm về hành vi trộm cắp, dữ liệu phiên bị phơi nhiễm, cố định phiên và vụ cướp phiên cùng với các thực tiễn mà bạn có thể sử dụng để giúp ngăn chặn chúng.

Các tin đồn là đúng: HTTP là một giao thức không quốc tịch. Mô tả này nhận ra sự thiếu liên kết giữa hai yêu cầu HTTP. Vì giao thức không cung cấp bất kỳ phương thức nào mà máy khách có thể sử dụng để xác định chính nó, máy chủ không thể phân biệt giữa các máy khách.

Mặc dù bản chất không trạng thái của HTTP có một số lợi ích quan trọng, sau tất cả, việc duy trì trạng thái đòi hỏi một số chi phí, nó đưa ra một thách thức độc đáo cho các nhà phát triển cần tạo các ứng dụng web trạng thái. Không có cách nào để xác định khách hàng, không thể xác định liệu người dùng đã đăng nhập, có các mặt hàng trong giỏ hàng hay cần đăng ký.

Một giải pháp thanh lịch cho vấn đề này, ban đầu được hình thành bởi Netscape, là một cơ chế quản lý nhà nước gọi là cookie. Cookie là một phần mở rộng của giao thức HTTP. Chính xác hơn, chúng bao gồm hai tiêu đề HTTP: tiêu đề phản hồi

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
4 và tiêu đề yêu cầu
    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
5.

Khi khách hàng gửi yêu cầu cho một URL cụ thể, máy chủ có thể chọn bao gồm tiêu đề

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
4 trong phản hồi. Đây là một yêu cầu cho khách hàng bao gồm một tiêu đề
    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
5 tương ứng trong các yêu cầu trong tương lai của nó. Hình 4-1 minh họa trao đổi cơ bản này.

Hình & NBSP; 4-1. & NBSP; Trao đổi cookie hoàn chỉnh liên quan đến hai giao dịch HTTP

Nếu bạn sử dụng khái niệm này để cho phép một mã định danh duy nhất được đưa vào mỗi yêu cầu (trong tiêu đề

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
5), bạn có thể bắt đầu xác định duy nhất máy khách và liên kết các yêu cầu của họ với nhau. Đây là tất cả những gì cần thiết cho trạng thái, và đây là việc sử dụng chính của cơ chế.

Khái niệm quản lý phiên dựa trên khả năng duy trì trạng thái bằng cách duy trì dữ liệu liên quan đến từng khách hàng duy nhất. Dữ liệu này được lưu trong một kho lưu trữ dữ liệu phiên và nó được cập nhật trên mỗi yêu cầu. Bởi vì định danh duy nhất chỉ định một bản ghi cụ thể trong lưu trữ dữ liệu phiên, nên nó thường được gọi là định danh phiên.

Nếu bạn sử dụng cơ chế phiên bản địa của PHP, tất cả sự phức tạp này sẽ được xử lý cho bạn. Khi bạn gọi

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
9, trước tiên PHP sẽ xác định xem một định danh phiên có được bao gồm trong yêu cầu hiện tại hay không. Nếu một là, dữ liệu phiên cho phiên cụ thể đó được đọc và cung cấp cho bạn trong mảng Superglobal
    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
0. Nếu một người không, PHP sẽ tạo một mã định danh phiên và tạo một bản ghi mới trong lưu trữ dữ liệu phiên. Nó cũng xử lý việc truyền bá định danh phiên và cập nhật lưu trữ dữ liệu phiên trên mỗi yêu cầu. Hình 4-2 minh họa quá trình này.

Mặc dù sự tiện lợi này là hữu ích, điều quan trọng là phải nhận ra rằng nó không phải là một giải pháp hoàn chỉnh. Không có bảo mật cố hữu trong cơ chế phiên Php, ngoài thực tế là định danh phiên mà nó tạo ra là đủ ngẫu nhiên, do đó loại bỏ tính thực tế của dự đoán. Bạn phải cung cấp các biện pháp bảo vệ của riêng bạn để bảo vệ chống lại tất cả các cuộc tấn công phiên khác. Tôi sẽ cho bạn thấy một vài vấn đề và giải pháp trong chương này.

Một rủi ro liên quan đến việc sử dụng cookie là cookie của người dùng có thể bị đánh cắp bởi kẻ tấn công. Nếu số nhận dạng phiên được giữ trong cookie, việc tiết lộ cookie là một rủi ro nghiêm trọng, bởi vì nó có thể dẫn đến việc chiếm quyền điều khiển phiên.

Hình & NBSP; 4-2. & NBSP; PHP xử lý sự phức tạp của quản lý phiên cho bạn

Hai nguyên nhân phổ biến nhất của việc tiết lộ cookie là các lỗ hổng trình duyệt và kịch bản chéo trang (được thảo luận trong Chương 2). Mặc dù không có lỗ hổng trình duyệt nào như vậy được biết đến vào thời điểm này, nhưng đã có một số ít trong quá khứ, những điều đáng chú ý nhất nằm trong phiên bản Internet Explorer 4.0, 5.0, 5.5 và 6.0 (các bản vá khắc phục có sẵn cho mỗi lỗ hổng này).

Mặc dù các lỗ hổng trình duyệt chắc chắn không phải là lỗi của các nhà phát triển web, bạn có thể thực hiện các bước để giảm thiểu rủi ro cho người dùng của mình. Trong một số trường hợp, bạn có thể thực hiện các biện pháp bảo vệ thực tế loại bỏ rủi ro. Ít nhất, bạn có thể cố gắng giáo dục người dùng của mình và hướng họ đến một bản vá để khắc phục lỗ hổng.

Vì những lý do này, thật tốt khi nhận thức được các lỗ hổng mới. Có một vài trang web và danh sách gửi thư mà bạn có thể theo kịp và nhiều dịch vụ bắt đầu cung cấp nguồn cấp dữ liệu RSS, để bạn có thể chỉ cần đăng ký vào nguồn cấp dữ liệu và được cảnh báo về các lỗ hổng mới. SecurityF Focus duy trì danh sách các lỗ hổng phần mềm tại http://online.securityfocus.com/vulnerability và bạn có thể lọc các tư vấn này bằng nhà cung cấp, tiêu đề và phiên bản. Hiệp hội bảo mật PHP cũng duy trì các bản tóm tắt của các bản tin SecurityF Focus tại http://phpsec.org/projects/vulnerability/securityf Focus.html.

Kịch bản chéo trang là một cách tiếp cận phổ biến hơn được sử dụng bởi những kẻ tấn công để đánh cắp cookie. Kẻ tấn công có thể sử dụng một số cách tiếp cận, một trong số đó được mô tả trong Chương 2. Vì các tập lệnh phía máy khách có quyền truy cập vào cookie, tất cả kẻ tấn công phải làm là viết một tập lệnh cung cấp thông tin này. Sáng tạo là yếu tố hạn chế duy nhất.

Do đó, việc bảo vệ người dùng của bạn khỏi hành vi trộm cắp cookie là sự kết hợp của việc tránh các lỗ hổng kịch bản chéo và phát hiện các trình duyệt có các lỗ hổng bảo mật có thể dẫn đến phơi nhiễm cookie. Bởi vì cái sau là rất hiếm (với bất kỳ may mắn nào, các loại lỗ hổng này sẽ vẫn còn hiếm), nó không phải là mối quan tâm chính mà là một điều cần lưu ý.

Dữ liệu phiên tiếp xúc

Dữ liệu phiên thường bao gồm thông tin cá nhân và dữ liệu nhạy cảm khác. Vì lý do này, việc tiếp xúc của dữ liệu phiên là một mối quan tâm phổ biến. Nói chung, phơi sáng là tối thiểu, bởi vì lưu trữ dữ liệu phiên nằm trong môi trường máy chủ, cho dù trong cơ sở dữ liệu hoặc hệ thống tập tin. Do đó, dữ liệu phiên vốn không phải chịu sự tiếp xúc của công chúng.

Kích hoạt SSL là một cách đặc biệt hữu ích để giảm thiểu việc tiếp xúc với dữ liệu được gửi giữa máy khách và máy chủ và điều này rất quan trọng đối với các ứng dụng trao đổi dữ liệu nhạy cảm với máy khách. SSL cung cấp một lớp bảo mật bên dưới HTTP, để tất cả dữ liệu trong các yêu cầu và phản hồi HTTP được bảo vệ.

Nếu bạn lo ngại về bảo mật của chính lưu trữ dữ liệu phiên, bạn có thể mã hóa nó để dữ liệu phiên không thể được đọc mà không cần khóa thích hợp. Điều này dễ dàng đạt được trong PHP bằng cách sử dụng

    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
1 và viết các chức năng lưu trữ và truy xuất phiên của riêng bạn mã hóa dữ liệu phiên được lưu trữ và giải mã dữ liệu phiên được đọc. Xem Phụ lục C để biết thêm thông tin về việc mã hóa lưu trữ dữ liệu phiên.

Cố định phiên

Một mối quan tâm chính liên quan đến các phiên là bí mật của số nhận dạng phiên. Nếu điều này được giữ bí mật, không có rủi ro thực tế của vụ cướp phiên. Với số nhận dạng phiên hợp lệ, kẻ tấn công có nhiều khả năng mạo danh thành công một trong những người dùng của bạn.

Kẻ tấn công có thể sử dụng ba phương thức chính để có được định danh phiên hợp lệ:

  • Sự dự đoán

  • Chiếm lấy

  • Cố định

PHP tạo ra một định danh phiên rất ngẫu nhiên, vì vậy dự đoán không phải là một rủi ro thực tế. Việc bắt giữ một định danh phiên là phổ biến hơn, việc kiểm tra mức độ phơi nhiễm của định danh phiên, sử dụng SSL và theo kịp các lỗ hổng trình duyệt có thể giúp bạn giảm thiểu nguy cơ bị bắt.

Mẹo

Hãy nhớ rằng trình duyệt bao gồm tiêu đề

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
5 trong tất cả các yêu cầu đáp ứng các yêu cầu được nêu trong tiêu đề
    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
4 trước đó. Khá phổ biến, định danh phiên đang được phơi bày không cần thiết trong các yêu cầu cho các tài nguyên nhúng, chẳng hạn như hình ảnh. Ví dụ: để yêu cầu một trang web có 10 hình ảnh, mã định danh phiên được gửi bởi trình duyệt trong 11 yêu cầu khác nhau, nhưng chỉ cần 1 trong số đó. Để tránh sự tiếp xúc không cần thiết này, bạn có thể xem xét phục vụ tất cả các tài nguyên được nhúng từ một máy chủ với một tên miền khác.

Cố định phiên là một cuộc tấn công lừa nạn nhân bằng cách sử dụng số nhận dạng phiên được chọn bởi kẻ tấn công. Đây là phương pháp đơn giản nhất mà kẻ tấn công có thể có được một định danh phiên hợp lệ.

Trong trường hợp đơn giản nhất, một cuộc tấn công cố định phiên sử dụng một liên kết:

    <a href="http://example.org/index.php?PHPSESSID=1234">Click Here</a>

Một cách tiếp cận khác là sử dụng chuyển hướng cấp giao thức:

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>

Tiêu đề

    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
4 cũng có thể được sử dụng được cung cấp như một tiêu đề HTTP thực tế hoặc trong thuộc tính
    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
5 của thẻ
    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
6. Mục tiêu của kẻ tấn công là để người dùng truy cập URL bao gồm một số nhận dạng phiên của kẻ tấn công. Đây là bước đầu tiên trong một cuộc tấn công cơ bản; Cuộc tấn công hoàn chỉnh được minh họa trong Hình 4-3.

Hình & NBSP; 4-3. & NBSP; Một cuộc tấn công cố định phiên sử dụng định danh phiên được chọn bởi kẻ tấn công

Nếu thành công, kẻ tấn công có thể tránh được sự cần thiết phải chụp hoặc dự đoán một định danh phiên hợp lệ và có thể khởi chạy các loại tấn công bổ sung và nguy hiểm hơn.

Một cách tốt để hiểu rõ hơn điều này là tự mình thử. Bắt đầu với một tập lệnh có tên là Fixation.php:fixation.php:

    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>

Đảm bảo rằng bạn không có bất kỳ cookie hiện có nào cho máy chủ hiện tại hoặc xóa tất cả các cookie để chắc chắn. Truy cập

    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
7 và đưa
    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
8 vào URL:

    http://example.org/fixation.php?PHPSESSID=1234

Điều này tạo ra một biến phiên (

    <?php

    session_start();

    $_SESSION['username'] = 'chris';

    ?>
9) với giá trị
    http://example.org/fixation.php?PHPSESSID=1234
0. Việc kiểm tra lưu trữ dữ liệu phiên cho thấy
    http://example.org/fixation.php?PHPSESSID=1234
1 là mã định danh phiên được liên kết với dữ liệu này:

    $ cat /tmp/sess_1234
    username|s:5:"chris";

Tạo tập lệnh thứ hai, test.php, kết quả giá trị của

    http://example.org/fixation.php?PHPSESSID=1234
2 nếu nó tồn tại:test.php, that outputs the value of
    http://example.org/fixation.php?PHPSESSID=1234
2 if it exists:

    <?php

    session_start();

    if (isset($_SESSION['username']))
    {
      echo $_SESSION['username'];
    }

    ?>

Truy cập URL này bằng cách sử dụng một máy tính khác hoặc ít nhất là một trình duyệt khác và bao gồm cùng một số nhận dạng phiên trong URL:

    http://example.org/test.php?PHPSESSID=1234

Điều này khiến bạn tiếp tục phiên bạn bắt đầu khi bạn truy cập Fixation.php và việc sử dụng một máy tính khác (hoặc trình duyệt khác nhau) bắt chước vị trí của kẻ tấn công. Bạn đã chiếm đoạt thành công một phiên, và đây chính xác là những gì một kẻ tấn công có thể làm.fixation.php, and the use of a different computer (or different browser) mimics an attacker’s position. You have successfully hijacked a session, and this is exactly what an attacker can do.

Rõ ràng, điều này là không mong muốn. Vì hành vi này, kẻ tấn công có thể cung cấp một liên kết đến ứng dụng của bạn và bất kỳ ai sử dụng liên kết này để truy cập trang web của bạn sẽ sử dụng số nhận dạng phiên được chọn bởi kẻ tấn công.

Một nguyên nhân của vấn đề này là một mã định danh phiên trong URL được sử dụng để tạo phiên mới, ngay cả khi không có phiên hiện có cho định danh phiên cụ thể đó, PHP tạo ra một phiên. Điều này cung cấp một lỗ mở thuận tiện cho một kẻ tấn công. May mắn thay, chức năng

    http://example.org/fixation.php?PHPSESSID=1234
3 có thể được sử dụng để giúp ngăn chặn điều này:

    <?php

    session_start();

    if (!isset($_SESSION['initiated']))
    {
      session_regenerate_id();
      $_SESSION['initiated'] = TRUE;
    }

    ?>

Điều này đảm bảo rằng một mã định danh phiên mới được sử dụng bất cứ khi nào một phiên được bắt đầu. Tuy nhiên, đây không phải là một giải pháp hiệu quả vì một cuộc tấn công cố định phiên vẫn có thể thành công. Kẻ tấn công có thể chỉ cần truy cập trang web của bạn, xác định số nhận dạng phiên mà PHP gán và sử dụng mã định danh phiên đó trong cuộc tấn công cố định phiên.

Điều này không loại bỏ cơ hội cho kẻ tấn công gán một định danh phiên đơn giản như

    http://example.org/fixation.php?PHPSESSID=1234
1, nhưng kẻ tấn công vẫn có thể kiểm tra cookie hoặc URL (tùy thuộc vào phương thức lan truyền) để nhận định danh phiên được chỉ định bởi PHP. Cách tiếp cận này được minh họa trong Hình 4-4.

Để giải quyết điểm yếu này, nó giúp hiểu phạm vi của vấn đề. Cố định phiên chỉ đơn thuần là một bước đệm, mục đích của cuộc tấn công là để có được một số nhận dạng phiên có thể được sử dụng để chiếm đoạt một phiên. Điều này hữu ích nhất khi phiên bị tấn công có mức độ đặc quyền cao hơn kẻ tấn công có thể có được thông qua các phương tiện hợp pháp. Mức độ đặc quyền này có thể đơn giản như đã được đăng nhập.

Nếu định danh phiên được tái tạo mỗi khi có sự thay đổi về mức độ đặc quyền, thì rủi ro cố định phiên thực tế sẽ được loại bỏ:

    <?php

    $_SESSION['logged_in'] = FALSE;

    if (check_login())
    {
      session_regenerate_id();
      $_SESSION['logged_in'] = TRUE;
    }

    ?>

Hình & NBSP; 4-4. & NBSP; Một cuộc tấn công cố định phiên trước tiên có thể khởi tạo phiên

Mẹo

Tôi không khuyên bạn nên tái tạo số nhận dạng phiên trên mỗi trang. Mặc dù điều này có vẻ như là một cách tiếp cận an toàn, và nó không phải là người bảo vệ hơn là tái tạo số nhận dạng phiên bất cứ khi nào có sự thay đổi về mức độ đặc quyền. Quan trọng hơn, nó có thể ảnh hưởng xấu đến người dùng hợp pháp của bạn, đặc biệt là nếu định danh phiên đang được truyền trong URL. Người dùng có thể sử dụng cơ chế lịch sử của trình duyệt để quay lại trang trước và các liên kết trên trang đó sẽ tham chiếu một mã định danh phiên không còn tồn tại.

Nếu bạn tái tạo lại số nhận dạng phiên khi có sự thay đổi về mức độ đặc quyền, thì tình huống tương tự cũng có thể của phiên, và tình huống này cũng ít phổ biến hơn.

Phiên tấn công

Cuộc tấn công phiên phổ biến nhất là vụ tấn công phiên. Điều này đề cập đến bất kỳ phương pháp nào mà kẻ tấn công có thể sử dụng để truy cập vào phiên khác của người dùng. Bước đầu tiên cho bất kỳ kẻ tấn công nào là có được định danh phiên hợp lệ và do đó, bí mật của định danh phiên là tối quan trọng. Các phần trước về phơi sáng và cố định có thể giúp bạn giữ cho định danh phiên một bí mật được chia sẻ giữa máy chủ và người dùng hợp pháp.

Nguyên tắc phòng thủ theo chiều sâu (được mô tả trong Chương 1) có thể được áp dụng cho các phiên, một số biện pháp bảo vệ nhỏ có thể cung cấp một số bảo vệ trong trường hợp không may mà định danh phiên được biết đến bởi kẻ tấn công. Là một nhà phát triển có ý thức bảo mật, mục tiêu của bạn là làm phức tạp sự mạo danh. Mỗi trở ngại, tuy nhiên nhỏ, cung cấp một số bảo vệ.

Chìa khóa để mạo danh làm phức tạp là để tăng cường nhận dạng. Định danh phiên là phương tiện nhận dạng chính và bạn muốn chọn dữ liệu khác mà bạn có thể sử dụng để tăng cường điều này. Dữ liệu duy nhất bạn có sẵn là dữ liệu trong mỗi yêu cầu HTTP:

    GET / HTTP/1.1
    Host: example.org
    User-Agent: Firefox/1.0
    Accept: text/html, image/png, image/jpeg, image/gif, */*
    Cookie: PHPSESSID=1234

Bạn muốn nhận ra tính nhất quán trong các yêu cầu và đối xử với bất kỳ hành vi không nhất quán nào với sự nghi ngờ. Ví dụ, trong khi tiêu đề

    http://example.org/fixation.php?PHPSESSID=1234
5 là tùy chọn, các máy khách gửi nó thường không thay đổi giá trị của nó. Nếu người dùng có số nhận dạng phiên là
    http://example.org/fixation.php?PHPSESSID=1234
1 đã sử dụng Mozilla Firefox một cách nhất quán kể từ khi đăng nhập, một công tắc đột ngột sang Internet Explorer nên được xử lý với sự nghi ngờ. Ví dụ, nhắc nhở mật khẩu là một cách hiệu quả để giảm thiểu rủi ro với tác động tối thiểu đến người dùng hợp pháp của bạn trong trường hợp báo động sai. Bạn có thể kiểm tra tính nhất quán của
    http://example.org/fixation.php?PHPSESSID=1234
5 như sau:

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
0

Mẹo

Tôi đã quan sát thấy rằng một số phiên bản của Internet Explorer gửi một tiêu đề ____38 khác nhau tùy thuộc vào việc người dùng làm mới trình duyệt, do đó,

    http://example.org/fixation.php?PHPSESSID=1234
8 không nên dựa vào tính nhất quán.

Yêu cầu

    http://example.org/fixation.php?PHPSESSID=1234
5 nhất quán giúp, nhưng nếu định danh phiên được truyền trong cookie (cách tiếp cận được đề xuất), thì thật hợp lý khi giả định rằng, nếu kẻ tấn công có thể nắm bắt được định danh phiên, rất có thể anh ta có thể nắm bắt được giá trị của tất cả các HTTP khác tiêu đề là tốt. Bởi vì tiết lộ Cookie thường liên quan đến lỗ hổng trình duyệt hoặc kịch bản chéo trang, nạn nhân rất có thể đã truy cập trang web của kẻ tấn công, tiết lộ tất cả các tiêu đề. Tất cả một kẻ tấn công phải làm là tái tạo tất cả những thứ này để tránh mọi kiểm tra tính nhất quán sử dụng các tiêu đề HTTP.

Một cách tiếp cận tốt hơn là tuyên truyền một mã thông báo trong URL, một thứ gì đó có thể được coi là một hình thức nhận dạng thứ hai (mặc dù yếu hơn nhiều). Sự tuyên truyền này cần một số công việc, không có tính năng nào của PHP làm điều đó cho bạn. Ví dụ: giả sử mã thông báo được lưu trữ trong

    $ cat /tmp/sess_1234
    username|s:5:"chris";
1, tất cả các liên kết nội bộ trong ứng dụng của bạn cần phải bao gồm nó:

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
1

Mẹo

Để làm cho việc tuyên truyền dễ dàng hơn một chút để quản lý, bạn có thể xem xét việc giữ toàn bộ chuỗi truy vấn trong một biến. Bạn có thể nối biến này vào tất cả các liên kết của mình, điều này giúp dễ dàng tái cấu trúc mã của bạn sau này, ngay cả khi bạn không thực hiện kỹ thuật này ban đầu.

Mã thông báo cần phải là thứ không thể dự đoán được, ngay cả trong điều kiện kẻ tấn công biết tất cả các tiêu đề HTTP mà trình duyệt của nạn nhân thường gửi. Một cách để đạt được điều này là tạo mã thông báo bằng cách sử dụng chuỗi ngẫu nhiên:

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
2

Khi bạn sử dụng một chuỗi ngẫu nhiên (

    $ cat /tmp/sess_1234
    username|s:5:"chris";
2 trong ví dụ này), dự đoán là không thực tế. Trong trường hợp này, việc nắm bắt mã thông báo dễ dàng hơn so với dự đoán nó và bằng cách truyền mã thông báo trong URL và mã định danh phiên trong cookie, nhiều cuộc tấn công là cần thiết để nắm bắt cả hai. Ngoại lệ là khi kẻ tấn công có thể quan sát các yêu cầu HTTP RAW của nạn nhân khi chúng được gửi đến ứng dụng của bạn, vì điều này tiết lộ mọi thứ. Loại tấn công này khó khăn hơn (và do đó ít có khả năng) và nó có thể được giảm thiểu bằng cách sử dụng SSL.

Mẹo

Một số chuyên gia cảnh báo không dựa vào sự nhất quán của

    http://example.org/fixation.php?PHPSESSID=1234
5. Mối quan tâm là một proxy HTTP trong một cụm có thể sửa đổi
    http://example.org/fixation.php?PHPSESSID=1234
5 không nhất quán với các proxy khác trong cùng một cụm.

Nếu bạn không muốn phụ thuộc vào tính nhất quán của

    http://example.org/fixation.php?PHPSESSID=1234
5, bạn có thể tạo mã thông báo ngẫu nhiên:

    <?php

    header('Location: http://example.org/index.php?PHPSESSID=1234');

    ?>
3

Cách tiếp cận này yếu hơn một chút, nhưng nó đáng tin cậy hơn nhiều. Cả hai phương pháp đều cung cấp một biện pháp phòng thủ mạnh mẽ chống lại vụ tấn công phiên. Sự cân bằng phù hợp giữa bảo mật và độ tin cậy là tùy thuộc vào bạn.

Phiên tấn công trong Php là gì?

Trụ tội là một lỗ hổng do kẻ tấn công có quyền truy cập vào định danh phiên của người dùng và có thể sử dụng tài khoản của người dùng khác đang mạo danh chúng. Điều này thường được sử dụng để có quyền truy cập vào tài khoản người dùng quản trị.a vulnerability caused by an attacker gaining access to a user's session identifier and being able to use another user's account impersonating them. This is often used to gain access to an administrative user's account.

Kỹ thuật nào chủ yếu được sử dụng để chiếm quyền điều khiển phiên?

Phương pháp bắt tặc phiên phổ biến nhất được gọi là giả mạo IP, khi kẻ tấn công sử dụng các gói IP được định tuyến nguồn để chèn các lệnh vào giao tiếp tích cực giữa hai nút trên mạng và ngụy trang thành một trong những người dùng được xác thực.IP spoofing, when an attacker uses source-routed IP packets to insert commands into an active communication between two nodes on a network and disguise itself as one of the authenticated users.

Điều gì được coi là lựa chọn tốt nhất chống lại vụ cướp phiên?

Có một số cách để ngăn chặn vụ cướp phiên xảy ra: Sử dụng mật khẩu mạnh và xác thực đa yếu tố.Các kỹ thuật này bảo vệ các tài khoản khỏi bị tin tặc truy cập nếu họ quản lý để đánh cắp ID phiên của người dùng (Alkove, 2021).Chỉ chia sẻ ID phiên với các nguồn đáng tin cậy.Use strong passwords and multifactor authentication. These techniques protect accounts from being accessed by hackers if they manage to steal a user's session ID (Alkove, 2021). Only share session IDs with trusted sources.

Làm thế nào có thể ngăn chặn vụ cướp phiên có thể được ngăn chặn?

Một số cách phổ biến nhất để ngăn chặn các cuộc tấn công tấn công phiên là: Chia sẻ ID phiên chỉ với các nguồn đáng tin cậy.Hãy nhớ rằng ID phiên có thể được bao gồm khi chia sẻ liên kết hoặc gửi yêu cầu đến các trang web.Sử dụng VPN ngăn chặn những kẻ tấn công chặn lưu lượng truy cập, làm cho việc ăn cắp ID phiên khó khăn hơn.Share session IDs with only trusted sources. Remember that session id may be included when sharing links or sending requests to websites. Using a VPN prevents attackers from intercepting traffic, making stealing session IDs more difficult.