Get a Pentest and security assessment of your IT network.

Cyber Security

Password Reset Limits: Security Benefits?

TL;DR

Yes, limiting characters during a password reset can improve cyber security, even if the regular login password has no limit. It makes automated attacks harder and reduces the impact of data breaches. However, it’s not a silver bullet – strong overall password policies are still vital.

Why Limit Reset Characters?

When someone resets their password, they’re often in a vulnerable state. They might be using a temporary link or answering security questions. A character limit on the new password during reset adds an extra layer of protection against attackers trying to guess it.

Step-by-Step Guide: Implementing & Benefits

  1. Understand the Risk: Automated attacks (like brute-force) are common during password resets. Attackers try many combinations quickly. A limit reduces the possible combinations they need to test.
    • If a breach occurs and reset tokens/hashes are stolen, limiting reset passwords makes those stolen credentials less useful.
  2. Choose a Reasonable Limit: 8-16 characters is generally a good starting point for the reset password limit. It’s long enough to be secure but short enough to be memorable.
  3. Implement the Limit in Your System: This depends on your system (website, application, etc.). Here are some examples:
    • PHP Example:
       16) {
        echo 'Password must be between 8 and 16 characters.';
      }
      ?>
    • JavaScript Example:
      const password = document.getElementById('password').value;
      if (password.length < 8 || password.length > 16) {
        alert('Password must be between 8 and 16 characters.');
      }
      
  4. Enforce Complexity Rules: Even with a limit, encourage (or require) a mix of uppercase letters, lowercase letters, numbers, and symbols.
  5. Regular Login Password Policy: Keep your regular login password policy strong. This should include:
    • Minimum length (often 12+ characters).
    • Complexity requirements (uppercase, lowercase, numbers, symbols).
    • Password history – prevent reuse of old passwords.
    • Regular password changes (though this is becoming less common in favour of breach detection).
  6. Rate Limiting: Implement rate limiting on the reset password endpoint to slow down brute-force attempts.
    • Example using a simple counter:
      // In your application logic
      $resetAttempts = $_SESSION['reset_attempts'] ?? 0;
      if ($resetAttempts >= 5) {
        echo 'Too many reset attempts. Please try again later.';
      } else {
        // Process password reset...
        $_SESSION['reset_attempts']++;
      }
      
  7. Monitor for Suspicious Activity: Look for unusual patterns in password reset requests. This could indicate an attack.
  8. Two-Factor Authentication (2FA): The best cyber security practice is to implement 2FA wherever possible, especially on accounts with sensitive information.

Important Considerations

  • User Experience: Don’t make the limit so strict that it frustrates users.
  • Consistency: Be clear about password requirements throughout your system.
  • Storage: Always hash and salt passwords securely (e.g., using bcrypt or Argon2). Never store passwords in plain text.
Related posts
Cyber Security

Zip Codes & PII: Are They Personal Data?

Cyber Security

Zero-Day Vulnerabilities: User Defence Guide

Cyber Security

Zero Knowledge Voting with Trusted Server

Cyber Security

ZeroNet: 51% Attack Risks & Mitigation