SonarLint: Don't use the default "PasswordEncoder" relying on plain-text.

0

Hej,

Mam taki dziwny problem, powiedzcie mi proszę co jest nie tak z tym kodem że sonar podświetla mi takie coś? ( SonarLint: Don't use the default "PasswordEncoder" relying on plain-text. )
Nie mogę tego rozkminić za bardzo. Błąd podświetla się na linijce " auth.userDetailsService(userService).passwordEncoder(passwordEncoder);"

@AllArgsConstructor
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter  {

    private final PasswordEncoder passwordEncoder;
    private final CustomUserService userService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userService).passwordEncoder(passwordEncoder);
    }

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    @Bean
    private PasswordEncoder encoder(){
        return new BCryptPasswordEncoder();
    }
}
0

Tutaj znalazłem jakieś informacje na ten tamat, choć wydaje się sprzeczna z tym co napisałeś:

Consider using safer alternatives, such as org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder (preferred) or org.springframework.security.crypto.password.Pbkdf2PasswordEncoder.

3

Strzelam.
Sonar nie wie co Ty tam naspringowałeś. I nie wie, że PasswordEncoder w polu final to tak naprawdę BCryptPasswordEncoder.
Nie mógłebyś jak człowiek wlepić:

private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();

I wywalić tą adnotację @Bean.

0

@jatylkonachwile: w sumie racja, zobacz czy sonar będzie się rzucał jak np. wywołasz konstruktor bezpośrednio tutaj:

 auth.userDetailsService(userService).passwordEncoder(new BCryptPasswordEncoder());
1

Klasyczny nieogar Sonara, bo przecież PasswordEncoder to intrefejs, wiec sonar w ogóle nie powinien robić jakichś założeń na temat użytej implementacji. Może rzuca jakis warning "na wszelki wypadek". Głupie reguły zawsze można wyłączyć a nie kombinować (sonar np. swego czasu nie umiał w method reference i rzucał wszędzie ze method not used).

0

Jakie macie zdanie nt narzedzi takich jak sonar lint ts lint itp? Pomagaja w waszej pracy ? Czasem mam wrazenie ze ludzie chca stworzyc magiczna recepture clean code'u uzywajac tego. W efekcie jest mnowstwo checkow, false positive'ow i jest gorzej niz bylo wczesniej. Czesc jest przydatna, ale tak jak napisalem mam wrazenie ze ludzie chca uzyskac clean code na skroty ?

1
filemonczyk napisał(a):

Jakie macie zdanie nt narzedzi takich jak sonar lint ts lint itp? Pomagaja w waszej pracy ?

Ogólnego podejścia do clean code to nie zastąpi, ale mi np pomaga to w następujących przypadkach:

  • Access modifier klasy / pola może być zmniejszony
  • jakieś pole jest nieużywane
  • Lambda może być zamieniona na method reference
1

Używam, bo potrzebuje. Sam prawie nigdy nie widzę literówek i nie widzę problemów w swoim kodzie. Nigdy nie widzę problemów z formatowaniem :/ (autoformatter do niektórych jezyków w oczach, niestety).
Sonar, Detekt, Codacy itd. dość mi pomagają w zwracaniu uwagi na takie rzeczy. +długość linii (jakby tego nie było to ja spokojnie do 500 znaków dojade).

Niby wiekszośc tego można ustawić w IDE, ale Ustawienia i ostrzeżenia w IDE NIE DZIAŁAJĄ

Czasem są fałszywe raporty - ale prawie każde narzędzie ma prosty system uciszania.

Bardzo pomagają w ustaleniu zasad, ile parametrów na metode itp. Każdy ma swoje granice dobrego smaku i nie chce mi się w zespole kłócić ciągle czy 5 parametrów to ok, czy może już za dużo ...
Dyskutujemy - wbijamy w narzędzie jakiś default i potem już się tego trzymamy, a jak ktoś chce coś nagiąć to musi poważnie uzasadnić.

Reguły czasem zmieniamy, dochodzą nowe, wypadają stare. Powoli.

0

Nie wiem jak w Javie, ale lintery w Scali cały czas ewoluują. Najnowszy projekt jaki spotkałem to ScalaClean. Z tego co zrozumiałem to ScalaClean skupia się na poszukiwaniu martwego kodu w projektach wielomodułowych

1 użytkowników online, w tym zalogowanych: 0, gości: 1