Hết thời gian chờ phiên php-fpm

Mình đã nghe rất nhiều người nói "session sẽ mất khi đóng trình duyệt". Đặc biệt khi còn là sinh viên thì câu này là câu "Thần chú" khi đi phỏng vấn. Vì vậy, phải khi đóng trình duyệt thực sự phiên sẽ không bị mất?

Ghi chú. Bài này mình dùng ngôn ngữ php và nginx nhé

Phiên là gì?

One session or also call is a working version. Trong khoa học máy tính, nó đơn giản là cách giao tiếp giữa máy khách với máy chủ. Một phiên bắt đầu khi máy khách gửi yêu cầu đến máy chủ, nó tồn tại xuyên suốt từ trang này đến trang khác trong ứng dụng và chỉ kết thúc khi hết thời gian chờ. Giá trị của phiên sẽ được lưu trong một tệp tin trên máy chủ

Phiên bản niệm nhớ chắc không quá xa lạ nữa. Mình muốn làm khác hơn nữa với ký ức này

"Giá trị của phiên sẽ được lưu trong một tệp tin trên máy chủ"

Tôi muốn biết tập tin đó được lưu trữ nhưng gì và ở đâu ?

Mình sẽ tạo ra 1 phiên và lưu 1 số giá trị vào


session_start();

$_SESSION["color"] = "red";
$_SESSION["color1"] = "yellow";

echo "Session is created";

Sau đó mở trình duyệt chrome để chạy.

Hết thời gian chờ phiên php-fpm

  • Key key (Session cookie)
    Hết thời gian chờ phiên php-fpm
  • Bạn (khách hàng)
    Hết thời gian chờ phiên php-fpm
  • người cho thuê tủ (máy chủ)
    Hết thời gian chờ phiên php-fpm
  • Đồ dùng trong tủ (nội dung của phiên)
    Hết thời gian chờ phiên php-fpm
  • Qui định

    • Mỗi khóa chỉ mở được 1 tủ, mỗi tủ có đồ dùng bên trong
    • Nếu bạn không quay lại sử dụng tủ thì tủ sẽ bị thi hồi sau 1 khoảng thời gian (do người cho thuê quyết định) kể cả bạn có chìa khóa.
      Hết thời gian chờ phiên php-fpm
      Hết thời gian chờ phiên php-fpm
    • Nếu mất chìa khóa thì bạn sẽ không sử dụng được tủ

    Như đã biết, đóng trình duyệt, cookie phiên sẽ mất

    Trường hợp này được tưởng tượng như sau

    Người cho thuê tủ cho bạn thuê tủ và đưa cho bạn chìa khóa để sử dụng cái tủ đó. nhưng vô tình bạn làm mất khóa. Mặc dù vẫn có tủ ở đó. Và theo quy định bạn không sử dụng tủ trong 1 khoảng thời gian thì tủ sẽ bị thu hồi

    Vì vậy câu "session will loss when close the browser"

    Trường hợp này sẽ là. Tủ quần áo sẽ bị thu hồi khi bạn mất khóa. nhưng thật ra bạn mất chìa khóa thì tủ vẫn còn đó. chỉ là do không có chìa khóa, bạn không thể sử dụng tủ đựng được và do không sử dụng lên sau 1 ngăn tủ đựng đồ sẽ bị thu hồi

    Kết luận

    Do close the browser, session was lost. Lý do là khi đóng trình duyệt, cookie phiên của bạn đã bị xóa. và vì không có cái Session cookie nữa. lên server không biết bạn là ai còn cái session cũ của bạn thì vẫn còn ở đó. và sau 1 khoảng thời gian được quy định phiên nó không được sử dụng vì vậy nó đã bị giết

    Qua bài viết này mình muốn làm rõ hơn vì sao đóng trình duyệt thì phiên bị mất. qua đó cũng hiểu rõ hơn về chế độ hoạt động của phiên

    Các mô-đun phiên sử dụng cookie HTTP và do đó có thể trở thành nạn nhân của các cuộc tấn công Cross Site Scripting hoặc để lộ thông tin cá nhân tiềm ẩn cho khách hàng. Vui lòng đảm bảo rằng các rủi ro liên quan đã được tính đến trước khi bật chức năng phiên trên máy chủ của bạn

    Mô-đun này cung cấp hỗ trợ cho một máy chủ trên mỗi giao diện phiên người dùng. Các phiên có thể được sử dụng để theo dõi xem người dùng đã đăng nhập hay chưa hoặc để biết thông tin khác của mỗi người dùng sẽ được giữ sẵn trong các yêu cầu

    Phiên có thể được lưu trữ trên máy chủ hoặc có thể được lưu trữ trên trình duyệt. Các phiên cũng có thể được mã hóa tùy chọn để tăng cường bảo mật. Các tính năng này được chia thành nhiều mô-đun ngoài

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2; . Tùy thuộc vào yêu cầu của máy chủ, hãy tải các mô-đun thích hợp vào máy chủ (tĩnh tại thời điểm biên dịch hoặc động thông qua chỉ thị
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    1)

    Các phiên có thể được thao tác từ các mô-đun khác phụ thuộc vào phiên hoặc phiên có thể được đọc và ghi vào bằng cách sử dụng các biến môi trường và tiêu đề HTTP, nếu phù hợp

    Hết thời gian chờ phiên php-fpm

    chủ đề

    chỉ thị

    danh sách kiểm tra sửa lỗi

    Xem thêm

    Cốt lõi của giao diện phiên là một bảng các cặp khóa và giá trị có thể truy cập được qua các yêu cầu của trình duyệt. Các cặp này có thể được đặt thành bất kỳ chuỗi hợp lệ nào, theo yêu cầu của ứng dụng sử dụng phiên

    "Phiên" là một chuỗi ứng dụng/x-www-form-urlencoded chứa các cặp giá trị khóa này, như được xác định bởi đặc tả HTML

    Phiên có thể tùy chọn được mã hóa và mã hóa base64 trước khi được ghi vào cơ chế lưu trữ, theo quy định của quản trị viên

    Giao diện phiên chủ yếu được phát triển để sử dụng bởi các mô-đun máy chủ khác, chẳng hạn như

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2, tuy nhiên, các ứng dụng dựa trên CGI có thể tùy chọn được cấp quyền truy cập vào nội dung của phiên thông qua biến môi trường HTTP_SESSION. Các phiên có tùy chọn được sửa đổi và/hoặc cập nhật bằng cách chèn tiêu đề phản hồi HTTP chứa các tham số phiên mới

    Apache có thể được cấu hình để theo dõi các phiên của mỗi người dùng được lưu trữ trên một máy chủ hoặc nhóm máy chủ cụ thể. Chức năng này tương tự như các phiên có sẵn trong các máy chủ ứng dụng điển hình

    Nếu được định cấu hình, các phiên được theo dõi thông qua việc sử dụng ID phiên được lưu trữ bên trong cookie hoặc được trích xuất từ ​​các tham số được nhúng trong chuỗi truy vấn URL, như được tìm thấy trong một yêu cầu GET thông thường

    Vì nội dung của phiên được lưu trữ độc quyền trên máy chủ, nên có kỳ vọng về quyền riêng tư của nội dung phiên. Điều này không ảnh hưởng đến hiệu suất và tài nguyên nếu có một số lượng lớn phiên hoặc khi một số lượng lớn máy chủ web phải chia sẻ phiên với nhau

    Mô-đun

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    0 cho phép lưu trữ các phiên của người dùng trong cơ sở dữ liệu SQL thông qua
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    4

    Trong môi trường lưu lượng truy cập cao, nơi việc theo dõi phiên trên máy chủ quá tốn tài nguyên hoặc bất tiện, thay vào đó, có tùy chọn lưu trữ nội dung của phiên trong cookie trên trình duyệt máy khách

    Điều này có lợi thế là máy chủ cần tối thiểu tài nguyên để theo dõi các phiên và nhiều máy chủ trong nhóm máy chủ không cần chia sẻ thông tin phiên

    Tuy nhiên, nội dung của phiên được hiển thị cho khách hàng, với nguy cơ mất quyền riêng tư tương ứng. Mô-đun

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    3 có thể được cấu hình để mã hóa nội dung của phiên trước khi ghi phiên cho máy khách

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    4 cho phép lưu trữ phiên người dùng trên trình duyệt trong cookie HTTP

    Tạo phiên đơn giản như bật phiên và quyết định nơi phiên sẽ được lưu trữ. Trong ví dụ này, phiên sẽ được lưu trữ trên trình duyệt, trong một cookie có tên là

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    7

    phiên dựa trên trình duyệt

    Session On
    SessionCookieName session path=/

    Phiên không hữu ích trừ khi nó có thể được ghi hoặc đọc từ. Ví dụ sau đây cho thấy cách các giá trị có thể được đưa vào phiên thông qua việc sử dụng tiêu đề phản hồi HTTP được xác định trước có tên là

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    8

    Viết cho một phiên

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session

    Tiêu đề phải chứa các cặp giá trị tên được biểu thị ở cùng định dạng với chuỗi truy vấn trong URL, như trong ví dụ bên dưới. Đặt khóa thành chuỗi trống có tác dụng xóa khóa đó khỏi phiên

    CGI để ghi vào một phiên

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    0

    Nếu được định cấu hình, phiên có thể được đọc lại từ biến môi trường HTTP_SESSION. Theo mặc định, phiên này được giữ ở chế độ riêng tư, do đó, phiên này phải được bật rõ ràng bằng chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    9

    Đọc từ một phiên

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2

    Sau khi đọc, biến CGI

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    00 phải chứa giá trị
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    01

    Sử dụng tính năng "hiển thị cookie" của trình duyệt của bạn, bạn sẽ thấy một bản trình bày văn bản rõ ràng về phiên. Đây có thể là một vấn đề nếu người dùng cuối cần không biết về nội dung của phiên hoặc khi bên thứ ba có thể truy cập trái phép vào dữ liệu trong phiên

    Nội dung của phiên có thể được mã hóa tùy chọn trước khi được đặt trên trình duyệt bằng mô-đun

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    3

    Phiên mã hóa dựa trên trình duyệt

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    5

    Phiên sẽ được tự động giải mã khi tải và được mã hóa khi lưu bởi Apache, ứng dụng cơ bản sử dụng phiên không cần biết rằng quá trình mã hóa đang diễn ra

    Các phiên được lưu trữ trên máy chủ thay vì trên trình duyệt cũng có thể được mã hóa khi cần, mang lại quyền riêng tư khi thông tin nhạy cảm tiềm ẩn được chia sẻ giữa các máy chủ web trong cụm máy chủ bằng cách sử dụng mô-đun

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    0

    Cơ chế cookie HTTP cũng cung cấp các tính năng bảo mật, chẳng hạn như khả năng hạn chế truyền cookie chỉ đến các trang được bảo vệ SSL hoặc ngăn javascript dựa trên trình duyệt truy cập vào nội dung của cookie

    Cảnh báo

    Một số tính năng bảo mật của cookie HTTP không chuẩn hoặc không được triển khai nhất quán trên các trình duyệt. Các mô-đun phiên cho phép bạn đặt tham số cookie nhưng không đảm bảo rằng quyền riêng tư sẽ được trình duyệt tôn trọng. Nếu lo ngại về bảo mật, hãy sử dụng

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    3 để mã hóa nội dung của phiên hoặc lưu trữ phiên trên máy chủ bằng mô-đun
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    0

    Các thông số cookie tiêu chuẩn có thể được chỉ định sau tên của cookie, như trong ví dụ bên dưới

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    8

    Trong trường hợp máy chủ Apache tạo thành giao diện người dùng cho máy chủ gốc phụ trợ, có thể xóa cookie phiên khỏi các tiêu đề HTTP đến bằng cách sử dụng chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    06. Điều này giữ cho nội dung của cookie phiên không thể truy cập được từ máy chủ phụ trợ

    Có thể trong nhiều máy chủ ứng dụng, các mô-đun xác thực có thể sử dụng phiên để lưu trữ tên người dùng và mật khẩu sau khi đăng nhập.

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2 lưu tên đăng nhập và mật khẩu của người dùng trong phiên

    Xác thực dựa trên biểu mẫu

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    1

    Xem mô-đun

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2 để biết tài liệu và các ví dụ đầy đủ

    Để các phiên trở nên hữu ích, nó phải có thể chia sẻ nội dung của một phiên với các ứng dụng bên ngoài và ứng dụng bên ngoài phải có thể viết một phiên của riêng nó

    Một ví dụ điển hình có thể là một ứng dụng thay đổi mật khẩu của người dùng do

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2 đặt. Ứng dụng này sẽ cần đọc tên người dùng và mật khẩu hiện tại từ phiên, thực hiện các thay đổi bắt buộc đối với mật khẩu của người dùng, sau đó ghi mật khẩu mới vào phiên để cung cấp quá trình chuyển đổi liền mạch sang mật khẩu mới

    Ví dụ thứ hai có thể liên quan đến một ứng dụng đăng ký người dùng mới lần đầu tiên. Khi đăng ký hoàn tất, tên người dùng và mật khẩu được ghi vào phiên, cung cấp quá trình chuyển đổi liền mạch để đăng nhập

    Mô-đun ApacheCác mô-đun trong máy chủ cần truy cập vào phiên có thể sử dụng mod_session. h API để đọc và ghi vào phiên. Cơ chế này được sử dụng bởi các mô-đun như
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2. Các chương trình CGI và ngôn ngữ kịch bản Các ứng dụng chạy trong máy chủ web có thể tùy ý truy xuất giá trị của phiên từ biến môi trường HTTP_SESSION. Phiên phải được mã hóa dưới dạng chuỗi ứng dụng/x-www-form-urlencoding như được mô tả bởi đặc tả HTML. Biến môi trường được kiểm soát bởi cài đặt của chỉ thị
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    9. Phiên có thể được ghi vào bởi tập lệnh bằng cách trả về tiêu đề phản hồi ứng dụng/x-www-form-urlencoded với tên được đặt bởi chỉ thị
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    22. Trong cả hai trường hợp, bất kỳ quá trình mã hóa hoặc giải mã nào cũng như việc đọc phiên từ hoặc ghi phiên vào cơ chế lưu trữ đã chọn đều được xử lý bởi các mô-đun
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2 và cấu hình tương ứng. Các ứng dụng phía sau
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    24Nếu lệnh
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    22 được sử dụng để xác định tiêu đề yêu cầu HTTP, thì phiên, được mã hóa dưới dạng chuỗi ứng dụng/x-www-form-urlencoded, sẽ được cung cấp cho ứng dụng. Nếu cùng một tiêu đề được cung cấp trong phản hồi, giá trị của tiêu đề phản hồi này sẽ được sử dụng để thay thế phiên. Như trên, bất kỳ quá trình mã hóa hoặc giải mã nào cũng như việc đọc phiên từ hoặc ghi phiên vào cơ chế lưu trữ đã chọn đều được xử lý bởi các mô-đun
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    2 và cấu hình tương ứng. Các ứng dụng độc lập Các ứng dụng có thể chọn thao tác phiên bên ngoài sự kiểm soát của máy chủ HTTP Apache. Trong trường hợp này, ứng dụng có trách nhiệm đọc phiên từ cơ chế lưu trữ đã chọn, giải mã phiên, cập nhật phiên, mã hóa phiên và ghi phiên vào cơ chế lưu trữ đã chọn, nếu phù hợp

    Chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    27 kích hoạt phiên cho vùng chứa thư mục hoặc vị trí. Các lệnh khác kiểm soát nơi phiên sẽ được lưu trữ và cách duy trì quyền riêng tư

    Nếu được đặt thành Bật, lệnh

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    28 sẽ khiến nội dung của phiên được ghi vào biến môi trường CGI có tên là HTTP_SESSION

    Chuỗi được viết ở định dạng truy vấn URL, ví dụ

    Chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    29 chỉ cho phép các phiên bị vô hiệu hóa liên quan đến tiền tố URL. Điều này có thể được sử dụng để làm cho một trang web hiệu quả hơn, bằng cách nhắm mục tiêu một không gian URL chính xác hơn mà một phiên sẽ được duy trì. Theo mặc định, tất cả các URL trong thư mục hoặc vị trí được bao gồm trong phiên. Chỉ thị
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    50 được ưu tiên hơn chỉ thị
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    51

    Cảnh báo

    Lệnh này có mục đích tương tự như thuộc tính đường dẫn trong cookie HTTP, nhưng không nên nhầm lẫn với thuộc tính này. Lệnh này không đặt thuộc tính đường dẫn, thuộc tính này phải được cấu hình riêng

    Xác định số giây mà phiên hết hạn có thể thay đổi mà phiên không được cập nhật

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    52
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    53cấu hình máy chủ, máy chủ ảo, thư mục,. htaccessExtensionmod_sessionCó sẵn trong Apache 2. 4. 41 trở về sau

    Chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    54 cho phép các phiên tránh chi phí liên quan đến việc viết phiên mỗi yêu cầu khi chỉ có thời gian hết hạn thay đổi. Điều này có thể được sử dụng để làm cho trang web hiệu quả hơn hoặc giảm tải cho cơ sở dữ liệu khi sử dụng
    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    0. Phiên luôn được ghi nếu dữ liệu được lưu trữ trong phiên đã thay đổi hoặc thời gian hết hạn đã thay đổi nhiều hơn khoảng thời gian được định cấu hình

    Đặt khoảng thời gian thành 0 sẽ tắt lệnh này và hết hạn phiên được làm mới cho mỗi yêu cầu

    Chỉ thị này chỉ có hiệu lực khi được kết hợp với

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    56 để cho phép hết hạn phiên. Các phiên không hết hạn chỉ được ghi khi dữ liệu được lưu trữ trong phiên đã thay đổi

    Cảnh báo

    Vì thời gian hết hạn của phiên có thể không được làm mới với mỗi yêu cầu nên các phiên có thể hết hạn sớm hơn vài giây. Sử dụng một khoảng thời gian ngắn thường cung cấp đủ tiền tiết kiệm trong khi có ảnh hưởng tối thiểu đến việc giải quyết hết hạn

    Chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    57 xác định tên của tiêu đề phản hồi HTTP, nếu có, sẽ được phân tích cú pháp và ghi vào phiên hiện tại

    Ví dụ: giá trị tiêu đề phải ở định dạng truy vấn URL

    Khi khóa được đặt thành chuỗi trống, khóa đó sẽ bị xóa khỏi phiên

    Chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    58 chỉ cho phép các phiên hợp lệ đối với các tiền tố URL cụ thể. Điều này có thể được sử dụng để làm cho một trang web hiệu quả hơn, bằng cách nhắm mục tiêu một không gian URL chính xác hơn mà một phiên sẽ được duy trì. Theo mặc định, tất cả các URL trong thư mục hoặc vị trí được bao gồm trong phiên

    Cảnh báo

    Lệnh này có mục đích tương tự như thuộc tính đường dẫn trong cookie HTTP, nhưng không nên nhầm lẫn với thuộc tính này. Lệnh này không đặt thuộc tính đường dẫn, thuộc tính này phải được cấu hình riêng

    Chỉ thị

    Session On
    SessionCookieName session path=/
    SessionHeader X-Replace-Session
    59 xác định giới hạn thời gian mà phiên sẽ vẫn còn hiệu lực. Khi một phiên được lưu, giới hạn thời gian này được đặt lại và phiên hiện có có thể được tiếp tục. Nếu một phiên trở nên cũ hơn giới hạn này mà không có yêu cầu máy chủ làm mới phiên, thì phiên đó sẽ hết thời gian chờ và bị xóa. Khi một phiên được sử dụng để lưu trữ chi tiết đăng nhập của người dùng, điều này có tác dụng tự động đăng xuất người dùng sau một khoảng thời gian nhất định