Phiên là một cách để lưu trữ thông tin [ở dạng biến] được sử dụng trên nhiều Yêu cầu HTTP, để mô phỏng “trạng thái” trên các trang điều hướng
Không giống như cookie, thông tin không được lưu trữ trên máy tính của người dùng cuối mà trong máy chủ ứng dụng
Vì lý do bảo mật, các phiên có giới hạn thời gian tồn tại hơn thời gian hết hạn. PHP có giới hạn phiên hết thời gian chờ mặc định và đôi khi đó không phải là thời gian chờ mà ứng dụng của bạn cần. Trong bài đăng này, chúng ta sẽ tìm hiểu cách thay đổi Thời gian chờ phiên PHP
Thời gian chờ của phiên PHP là bao lâu
Thời gian chờ của phiên PHP tùy thuộc vào cấu hình máy chủ hoặc các chỉ thị liên quan session.gc_maxlifetime
trong tệp php.ini
Thông thường, thời gian chờ phiên PHP mặc định là 24 phút [1440 giây], nhưng máy chủ lưu trữ web của bạn có thể đã thay đổi mặc định thành một thứ khác
Thời gian chờ phiên hợp lý là gì?
OWASP, một trong những tổ chức tiêu chuẩn bảo mật ứng dụng web có thẩm quyền nhất, cho biết về thời gian chờ của phiên
“Ứng dụng web không đủ thời gian hết hạn phiên làm tăng khả năng xảy ra các cuộc tấn công dựa trên phiên khác, vì để kẻ tấn công có thể sử dụng lại ID phiên hợp lệ và chiếm quyền điều khiển phiên được liên kết, nó vẫn phải đang hoạt động. Khoảng thời gian phiên càng ngắn thì thời gian kẻ tấn công sử dụng ID phiên hợp lệ càng ít. Các giá trị hết thời gian chờ của phiên phải được đặt phù hợp với mục đích và bản chất của ứng dụng web, đồng thời cân bằng giữa tính bảo mật và khả năng sử dụng, để người dùng có thể thoải mái hoàn thành các thao tác trong ứng dụng web mà phiên của anh ta không thường xuyên hết hạn…Phạm vi thời gian chờ không hoạt động phổ biến là 2 . ”
Từ góc độ hướng dẫn của liên bang, dự thảo NIST 800-63B – Nguyên tắc nhận dạng kỹ thuật số đề xuất khuyến nghị sau để cung cấp độ tin cậy cao cho xác thực. “Việc xác thực lại người đăng ký SẼ được lặp lại sau không quá 30 phút người dùng không hoạt động. ”
Vì vậy, phiên của bạn không nên kéo dài hơn 30 phút. Đọc các cân nhắc về thời gian chờ của Phiên trong bài viết này
Đặt thời gian chờ phiên PHP
Giới hạn thời gian chờ của phiên trong PHP được định cấu hình bằng hai lệnh trong tệp php.ini
phiên họp. gc_maxlifetime. Nó được sử dụng để đặt giới hạn thời gian tính bằng giây để lưu trữ thông tin phiên trong máy chủ trong một thời gian dài
phiên họp. cookie_lifetime. Nó được sử dụng để đặt giới hạn thời gian hết hạn cho cookie PHPSESSID
Một cách khác để đặt thời gian chờ phiên PHP là sử dụng hàm ini_set[]
trong tập lệnh PHP
sử dụng php. cài đặt ini cho thời gian chờ của phiên
Tìm chỉ thị session.gc_maxlifetime
và chọn nhỏ nhất có thể. session.gc_maxlifetime
là cài đặt để xóa ID phiên lỗi thời. Không nên dựa vào cài đặt này. Các nhà phát triển nên tự quản lý thời gian tồn tại của phiên bằng dấu thời gian
Nó chỉ định số giây sau đó dữ liệu sẽ được coi là 'rác' và có khả năng được dọn sạch. Việc thu gom rác có thể diễn ra trong thời gian bắt đầu phiên học [tùy thuộc vào session.gc_probability
và
Session is created for PHPSESSID.
0]. Mặc định là 1440 [24 phút]Tìm chỉ thị
Session is created for PHPSESSID.
1 và đặt nó thành Session is created for PHPSESSID.
2 [không]. Giá trị này có ý nghĩa đặc biệt. Nó thông báo cho các trình duyệt không lưu trữ cookie vào bộ lưu trữ vĩnh viễn. Do đó, khi trình duyệt bị chấm dứt, cookie ID phiên sẽ bị xóa ngay lập tức. Nếu nhà phát triển đặt giá trị này khác 0, nó có thể cho phép người dùng khác sử dụng ID phiên. Hầu hết các ứng dụng nên sử dụng “0” cho việc nàyNếu cần có tính năng đăng nhập tự động, nhà phát triển phải triển khai tính năng đăng nhập tự động an toàn của riêng họ. Không sử dụng ID phiên dài hạn cho việc này
Sử dụng lệnh ini_set để đặt thời gian chờ phiên
Bạn có thể đặt session.gc_maxlifetime
và
Session is created for PHPSESSID.
1 bằng cách sử dụng chức năng Session is created for PHPSESSID.
5Đối với điều này, khi bắt đầu tập lệnh của bạn, hãy gọi hàm chuyển lệnh và giá trị mong muốn để đặt nó
Xem ví dụ sau
Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên lần đầu tiên
Session is created for PHPSESSID.
Và thực hiện lại sau 2 giây, đầu ra sẽ là
Session is expired.
Phần kết luận
Thời gian chờ phiên phù hợp cho các ứng dụng PHP có thể được định cấu hình bằng cách sử dụng tệp php.ini
toàn cầu hoặc bằng các tập lệnh, điều này mang lại cho nhà phát triển nhiều quyền kiểm soát hơn về số lượng phiên sẽ kéo dài