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

Odpowiedz Nowy wątek
2020-03-25 22:26

Rejestracja: 1 rok temu

Ostatnio: 2 dni temu

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();
    }
}
edytowany 1x, ostatnio: jatylkonachwile, 2020-03-25 22:26

Pozostało 580 znaków

2020-03-25 23:01

Rejestracja: 5 lat temu

Ostatnio: 2 minuty temu

Lokalizacja: Warszawa

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.


Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2020-03-25 23:25

Rejestracja: 3 lata temu

Ostatnio: 2 godziny temu

Lokalizacja: U krasnoludów - pod górą

2

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.


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 1x, ostatnio: jarekr000000, 2020-03-25 23:26
Czym się kierujesz kiedy tworzysz obiekt bezpośrednio w danej klasie zamiast używania DI? - coydicurko 2020-03-26 01:11
Tu w zasadzie nie było żadnego DI. PasswordEncoder był tworzeony w klasie (przez new) i tylko bez sensu przerzucany przez Springa (bo można :-) ). Generalnie nigdy sam nie używam Springa, ani kontenera DI (jeśli nie robie czegoś naprawdę dziwnego). Ale DI używam. - jarekr000000 2020-03-26 06:35

Pozostało 580 znaków

2020-03-26 01:03

Rejestracja: 5 lat temu

Ostatnio: 2 minuty temu

Lokalizacja: Warszawa

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());

Nie pomagam przez PM. Pytania zadaje się na forum.

Pozostało 580 znaków

2020-03-26 09:19
Moderator

Rejestracja: 16 lat temu

Ostatnio: 11 minut temu

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).


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2020-03-26 09:19

Pozostało 580 znaków

2020-03-26 13:44

Rejestracja: 5 lat temu

Ostatnio: 2 godziny temu

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 ?

Pozostało 580 znaków

2020-03-26 14:18

Rejestracja: 4 lata temu

Ostatnio: 2 godziny temu

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

Pozostało 580 znaków

2020-03-26 14:46

Rejestracja: 3 lata temu

Ostatnio: 2 godziny temu

Lokalizacja: U krasnoludów - pod górą

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.


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 2x, ostatnio: jarekr000000, 2020-03-26 21:05

Pozostało 580 znaków

2020-03-26 15:48

Rejestracja: 1 rok temu

Ostatnio: 18 minut temu

Lokalizacja: Silesia

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


Pozostało 580 znaków

Odpowiedz

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