The auth_cookie_bad_session_token WordPress PHP action is triggered when a bad session token is encountered during user authentication.
Usage
add_action('auth_cookie_bad_session_token', 'your_custom_function', 10, 1); function your_custom_function($cookie_elements) { // Your custom code here }
Parameters
$cookie_elements
(string[]): Authentication cookie components. None of the components should be assumed to be valid as they come directly from a client-provided cookie value.username
(string): User’s username.expiration
(string): The time the cookie expires as a UNIX timestamp.token
(string): User’s session token used.hmac
(string): The security hash for the cookie.scheme
(string): The cookie scheme to use.
More information
See WordPress Developer Resources: auth_cookie_bad_session_token
Examples
Log invalid session token
Log invalid session tokens for later analysis.
add_action('auth_cookie_bad_session_token', 'log_invalid_session_token', 10, 1); function log_invalid_session_token($cookie_elements) { // Log the invalid session token error_log('Invalid session token: ' . $cookie_elements['token']); }
Notify user about invalid session
Send an email notification to the user when an invalid session token is encountered.
add_action('auth_cookie_bad_session_token', 'notify_user_invalid_session', 10, 1); function notify_user_invalid_session($cookie_elements) { $user = get_user_by('login', $cookie_elements['username']); if ($user) { $subject = 'Invalid session detected'; $message = 'An invalid session token was detected for your account.'; wp_mail($user->user_email, $subject, $message); } }
Block IP address with invalid session token
Temporarily block IP addresses that provide invalid session tokens.
add_action('auth_cookie_bad_session_token', 'block_ip_invalid_session', 10, 1); function block_ip_invalid_session($cookie_elements) { $ip_address = $_SERVER['REMOTE_ADDR']; // Block IP address for 1 hour set_transient('block_ip_' . $ip_address, true, 3600); }
Track invalid session tokens count
Keep a count of invalid session tokens for each user.
add_action('auth_cookie_bad_session_token', 'track_invalid_session_count', 10, 1); function track_invalid_session_count($cookie_elements) { $user = get_user_by('login', $cookie_elements['username']); if ($user) { $invalid_sessions = (int) get_user_meta($user->ID, 'invalid_sessions', true); update_user_meta($user->ID, 'invalid_sessions', $invalid_sessions + 1); } }
Invalidate all user sessions on invalid session token
Invalidate all sessions for the user when an invalid session token is encountered.
add_action('auth_cookie_bad_session_token', 'invalidate_all_sessions', 10, 1); function invalidate_all_sessions($cookie_elements) { $user = get_user_by('login', $cookie_elements['username']); if ($user) { wp_destroy_all_sessions($user->ID); } }