Salvarea parolelor în clar în baza de date reprezintă o încălcare critică de securitate. Spring Security impune utilizarea interfeței PasswordEncoder pentru transformarea parolelor în hash-uri criptografice unidirecționale sigure.
Algoritmul standard recomandat este BCryptPasswordEncoder (sau Argon2), care generează automat un salt criptografic unic pentru fiecare parolă și folosește un factor de cost computațional reglabil (work factor) ce încetinește atacurile brute-force.
Exemplu: Definire bean BCryptPasswordEncoder și utilizare în serviciul de înregistrare
package ro.dexblog.demo.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@Configuration
class PasswordConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder(12); // factor de cost 12
}
}
@Service
public class UserRegistrationService {
private final PasswordEncoder encoder;
public UserRegistrationService(PasswordEncoder encoder) {
this.encoder = encoder;
}
public void register(String rawPassword) {
String secureHash = encoder.encode(rawPassword);
System.out.println("Hash generat pentru salvare în baza de date: " + secureHash);
}
}
Întrebări & Exemple de Cod:
PasswordEncoder și BCrypt în Spring SecurityAi o nelămurire despre utilizarea comenzii
PasswordEncoder și BCrypt în Spring Securitysau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.