Giữ cho tôi đăng nhập vào php
Đừng tiếp tục đăng nhập vào bảng quản trị WordPress của bạn nhiều lần. Cài đặt plugin này để duy trì trạng thái đăng nhập vào blog của bạn trong tối đa một năm (trừ khi bạn đăng xuất thủ công) Show
Cài đặt
Câu hỏi thường gặpTôi có thể tự thay đổi thời gian phiên không?Trong phiên bản này, không thể thay đổi thời gian phiên thông qua bất kỳ bảng cài đặt nào. Cách duy nhất có thể là chỉnh sửa rk-keep-me-login. php thủ công. Bạn có thể chỉnh sửa số giây bạn muốn phiên của mình kéo dài ở dòng 30 Nhận xétKhông có đánh giá cho plugin này Cộng tác viên & Nhà phát triển“WP Keep Me Logged In” là phần mềm mã nguồn mở. Những người sau đây đã đóng góp cho plugin này Xin chào, tôi hiện đang làm việc trên một trang web lưu trữ hình ảnh. Tôi muốn người dùng có thể đăng nhập để nâng cao một số thứ. Tôi mới viết PHP một chút và tôi đang gặp sự cố http. // trollin. info/ - nếu bạn cố gắng tạo một tài khoản, bạn sẽ thấy rằng tất cả đều hoạt động nhưng khi bạn đăng nhập và làm mới trang, bạn lại đăng xuất Đây là mã đăng nhập của tôi trên chỉ mục. php
Tôi đã sử dụng một hướng dẫn cho nó. Tôi cần giúp đỡ với hai điều
Cảm ơn Khi người dùng đăng nhập vào một ứng dụng web và sau đó đóng trình duyệt web, cookie phiên được liên kết với thông tin đăng nhập sẽ hết hạn ngay lập tức. Nghĩa là sau này nếu người dùng truy cập ứng dụng web thì cần phải đăng nhập lại Tính năng ghi nhớ cho phép người dùng lưu thông tin đăng nhập của họ trong một thời gian, ngay cả sau khi đóng trình duyệt web. Để triển khai tính năng ghi nhớ tôi, bạn sẽ sử dụng cookie có thời gian hết hạn trong tương lai Cách phổ biến nhưng không an toànCách không an toàn để thực hiện ghi nhớ tôi là thêm id người dùng vào cookie với thời gian hết hạn
Khi người dùng truy cập ứng dụng web, bạn kiểm tra id người dùng trong cookie có hợp lệ hay không trước khi đăng nhập tự động Cách tiếp cận ngây thơ này chỉ dựa vào cookie, không an toàn vì những lý do sau
Một cách tiếp cận an toàn hơnMột cách an toàn hơn để triển khai tính năng ghi nhớ tôi là lưu trữ mã thông báo ngẫu nhiên thay vì id người dùng trong cả cookie và máy chủ cơ sở dữ liệu Giá trị trong cookie sẽ trông như thế này
Và đây là bảng cơ sở dữ liệu lưu trữ các mã thông báo
Khi người dùng truy cập ứng dụng web, bạn khớp mã thông báo của cookie với mã thông báo được lưu trữ trong cơ sở dữ liệu. Ngoài ra, bạn có thể kiểm tra thời gian hết hạn của mã thông báo. Nếu mã thông báo khớp và chưa hết hạn, bạn có thể lấy id người dùng được liên kết với mã thông báo và tự động đăng nhập người dùng Truy vấn khớp mã thông báo sẽ như thế này
Cách tiếp cận này giải quyết được hai vấn đề trên
Tuy nhiên, cách tiếp cận này phơi bày một vấn đề bảo mật khác được gọi là tấn công thời gian Khi cơ sở dữ liệu so sánh mã thông báo của cookie với mã thông báo được lưu trữ trong cơ sở dữ liệu, nó sẽ trả về thời gian so sánh khác nhau tùy theo mức độ giống nhau của hai mã thông báo Ví dụ: nếu bạn có mã thông báo sau được lưu trữ trong cookie
Và mã thông báo sau trong cơ sở dữ liệu
Khi so sánh các mã thông báo này, cơ sở dữ liệu sẽ so sánh từng ký tự trong mã thông báo và dừng khớp khi phát hiện thấy không khớp. Trong ví dụ này, cơ sở dữ liệu dừng ở ký tự thứ hai Tuy nhiên, khi so sánh cặp mã thông báo sau
Cơ sở dữ liệu ngừng khớp sau khi so sánh ký tự cuối cùng thứ hai Thời gian so sánh trong ví dụ thứ hai sẽ luôn lớn hơn so với ví dụ thứ hai vì cơ sở dữ liệu cần so sánh nhiều ký tự hơn Bằng cách thử nghiệm các mã thông báo khác nhau, bạn có thể nhận được thời gian phản hồi khác nhau. Nói cách khác, thời gian bị rò rỉ. Để tránh rò rỉ thời gian, hàm so sánh cần trả về thời gian không đổi bất kể mã thông báo Ngăn chặn các cuộc tấn công thời gianSau đây trình bày cách ngăn chặn cuộc tấn công theo thời gian do P đề xuất. I. E. Theo cách tiếp cận này, thay vì lưu trữ một mã thông báo trong cookie, bạn lưu trữ một cặp mã thông báo. 6 và 7 với định dạng. 8 6 dùng để chọn 7 được lưu trữ trong cơ sở dữ liệu. Trong cơ sở dữ liệu, bạn lưu trữ hàm băm của 6 và 7
Để băm trình xác thực, bạn sử dụng hàm password_hash() Để lấy id người dùng, bạn khớp 6 từ cookie với 6 từ cơ sở dữ liệu
Nếu truy vấn trả về một hàng, bạn có thể khớp 7 từ cookie với 6 bằng cách sử dụng hàm 7 Nếu trình xác nhận phù hợp, bạn có thể tự động đăng nhập người dùng bằng 8 Phần sau sẽ cải thiện hệ thống đăng nhập bằng cách thêm tính năng ghi nhớ tôi bằng phương pháp thứ ba Tạo bảng user_tokens để lưu trữ mã thông báoCâu lệnh sau đây tạo một bảng 9 lưu trữ 6, hàm băm 7, 2 và id người dùng
Thêm hộp kiểm nhớ tôi vào biểu mẫu đăng nhậpĐầu tiên, thêm hộp kiểm nhớ tôi vào biểu mẫu đăng nhập trong tệp 3 0 Thứ hai, thêm mã để xử lý hộp kiểm nhớ tôi vào tệp 4 1 Trong 4, hãy thêm hộp kiểm ghi nhớ tôi vào lệnh gọi hàm filter() 2 Ngoài ra, hãy thêm tham số thứ ba vào hàm login() 3 Chúng tôi sẽ quay lại để cải thiện chức năng 6 sau Định nghĩa hàm xử lý tính năng ghi nhớĐầu tiên, tạo tệp 7 trong thư mục 8 Thứ hai, xác định các chức năng mới sau đây để xử lý mã thông báo trong tệp 7 Tạo mã thông báoPhần sau định nghĩa 0 để tạo cặp mã thông báo ngẫu nhiên được gọi là bộ chọn và trình xác thực 4 Hàm 0 trả về một mảng gồm ba phần tử. 6, 3 và 8 Phân tích cú pháp mã thông báoHàm 5 sau đây chia mã thông báo được lưu trữ trong cookie thành 6 và 7 5 Chèn mã thông báo người dùng mớiHàm 8 sau đây thêm một hàng mới vào bảng 9 6 Tìm mã thông báo bằng bộ chọnHàm 0 sau đây tìm một hàng trong bảng 9 bằng bộ chọn. Nó chỉ trả về bộ chọn khớp nếu mã thông báo chưa hết hạn bằng cách so sánh thời gian hết hạn với thời điểm hiện tại 7 Xóa mã thông báo người dùngHàm 2 sau đây xóa tất cả các mã thông báo được liên kết với người dùng 8 Tìm người dùng bằng mã thông báoHàm 3 sau đây trả về 8 và 5 bằng một mã thông báo 9 Kiểm tra xem mã thông báo có hợp lệ khôngHàm 6 sau đây phân tích mã thông báo được lưu trữ trong cookie ( 8) và trả về 8 nếu mã thông báo hợp lệ và chưa hết hạn hàm token_is_valid(chuỗi $token). bool { // phân tích cú pháp mã thông báo để lấy bộ chọn và trình xác thực [$selector, $validator] = parse_token($token); 0 Sửa đổi chức năng trong auth. phpPhần sau đây mô tả các thay đổi đối với các chức năng trong tệp 9 Hàm đăng nhập()Phần sau thêm tham số thứ ba 0 vào hàm 6 1 Nếu 0 là 8, hãy gọi hàm 4 Hàm log_user_in()Hàm log_user_in() đăng nhập người dùng 2 Hàm memory_me()Phần sau định nghĩa hàm 4 3 Hàm 4 lưu thông tin đăng nhập cho người dùng trong một số ngày được chỉ định. Theo mặc định, nó nhớ đăng nhập trong 30 ngày Hàm 4 thực hiện như sau
Hàm đăng xuất ()Nếu người dùng đăng xuất, ngoài việc xóa phiên, bạn cần xóa các bản ghi trong bảng 9 và xóa cookie 3 Làm cách nào để giữ cho tôi đăng nhập bằng PHP?Do đó, người dùng có thể đăng nhập mà không cần phải nhập lại Tên người dùng và Mật khẩu cho đến khi cookie đó hết hạn. Mã ví dụ được đưa ra dưới đây là cách hộp kiểm nhớ mật khẩu hoạt động thông qua PHP. $name = mysqli_real_escape_string( $connect , $_POST [ "user_name" ]);
Làm thế nào để nhớ đăng nhập PHP?Tạo cookie để duy trì trạng thái đăng nhập
. Vì đây là lỗ hổng bảo mật để lưu trữ mật khẩu đơn giản trong cookie, nên các số ngẫu nhiên được tạo làm khóa xác thực. |