Broken Authentication
What is Broken Authentication?
Maps to OWASP Top 10
Vulnerable Code and Secure Code Example
Attack Scenario
Insecure Implementation (Prone to Broken Authentication) Using Java Spring Security
@RestController
@RequestMapping("/api")
public class AuthController {
private final UserRepository userRepository;
public AuthController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@PostMapping("/login")
public ResponseEntity<?> login(@RequestParam String username, @RequestParam String password) {
User user = userRepository.findByUsername(username);
if (user == null || !user.getPassword().equals(password)) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid credentials");
}
// Generate a session token (insecurely)
String token = UUID.randomUUID().toString();
user.setToken(token);
userRepository.save(user);
return ResponseEntity.ok(token);
}
@GetMapping("/protected")
public ResponseEntity<?> getProtectedResource(@RequestHeader("Authorization") String token) {
User user = userRepository.findByToken(token);
if (user == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Unauthorized");
}
return ResponseEntity.ok("Protected resource accessed");
}
}Attack Payload Example:
Secure Implementation (Mitigating Broken Authentication) Using Java Spring Security
Key Points for Developers
Summary and Key Takeaways
Reference Links
Last updated