Phiên hết hạn PHP không hoạt động

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

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ày

Nế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

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

Làm cách nào để đặt thời gian hết hạn phiên trong PHP?

if[time[] - $_SESSION['login_time'] >= 1800]{ session_destroy[]; . tiêu đề ["Vị trí. đăng xuất. php"]; die[]; // // chuyển hướng nếu trang không hoạt động trong 30 phút } other { $_SESSION['login_time'] = time[]; // cập nhật 'login_time' tới lần cuối trang có nội dung này . }

Làm cách nào để xóa thời gian chờ của phiên trong PHP?

Cách sửa đổi thời gian chờ của phiên trong PHP .
Bắt đầu một phiên. Sử dụng session_start[] Tạo biến phiên. Phá hủy các biến và phiên
Sửa đổi thời gian chờ của phiên
Hàm session_start[] trong PHP

Làm cách nào để đặt thời gian chờ phiên không giới hạn trong PHP?

Biến phiên $_SESSION['start'] được khởi tạo để lưu trữ thời gian đăng nhập. Một biến khác $_SESSION['expire'] tính thời gian mà chúng tôi sẽ sử dụng để hủy phiên của mình. Ở đây chúng tôi nhân 40 phút của mình với 60 để chuyển đổi chúng thành giây [Bạn có thể thay đổi giá trị 40 phút theo yêu cầu của mình]

Thời gian chờ phiên mặc định của PHP là gì?

Mặc định là 1440 [24 phút] .

Chủ Đề