Jak odróżnić zły login od złego hasła?

0

Szukam sposobu jak odróżnić przypadek gdy bledem polaczenia z baza danych jest zły login czy złe hasło.
Na razie robię testy takie:

            string zapytanie = poprawneZapytanie;

            StringBuilder wlasciwosciWyjatku = new StringBuilder();

            using (SqlConnection connection = new SqlConnection(connString))
            {
                SqlCommand cmd = new SqlCommand(zapytanie, connection);
                try
                {
                    cmd.Connection.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    for (int i = 0; i < ex.Errors.Count; i++)
                    {
                        wlasciwosciWyjatku.Append(
                            "Index #" + i + "\n" +
                            "Class.ToString(): " + ex.Errors[i].Class.ToString() + "\n" +
                            "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                            "Message: " + ex.Errors[i].Message + "\n" +
                            "Number: " + ex.Errors[i].Number + "\n" +
                            "Procedure: " + ex.Errors[i].Procedure + "\n" +
                            "Server: " + ex.Errors[i].Server + "\n" +
                            "Source: " + ex.Errors[i].Source + "\n" +
                            "State: " + ex.Errors[i].State + "\n" +
                            ".ToString(): " + ex.Errors[i].ToString() + "\n");

                    }
                    Console.WriteLine(wlasciwosciWyjatku.ToString());
                }
            }

ConnectionString, buduję tak:

[email protected]"Data Source={NazwaServera}; Initial Catalog={NazwaBazyDanych}; User ID={Login}; Password={Haslo}"

chciałbym wiedzieć/rozróżnić przypadek gdy powodem jest zły login a kiedy złe hasło (do poprawnie wprowadzonego loginu).
Czy z wyjątku jestem w stanie trafić do jakiejś właściwości która to pokaże?

na razie czy to błąd loginu czy hasła, to wynikiem tego kodu jest jak niżej.
obraz_2022-11-19_100428098.png

Trafiłem na takie info:
https://learn.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-18456-database-engine-error?view=sql-server-ver16
obraz_2022-11-19_100723683.png

Wydaje się, że to to ale z MS SQL Server jestem noga, będę wdzięczny za podpowiedz jeżeli problemem jest właśnie 'State' = 1, co zmienić w SSMS i gdzie, żeby State mówił co trzeba. W SSMS poruszam się tez po omacku (na razie)

Tego użytkownika Varran starałem się zdefiniować w SSMS z takimi samymi uprawnieniami jak uzytkownik sa czyli jest 'sysadmin' , ale pewnie czegoś poprawnie nie ustawiłem.

PS.
Tym Varranem, mogę pobierać nazwy tabel systemowych.
Wątek powiązany z:
https://4programmers.net/Forum/Bazy_danych/290517-ms_sql_wyszukanie_rekordu_bazy_danych?p=1878019#id1878019

11
Varran napisał(a):

Szukam sposobu jak odróżnić przypadek gdy bledem polaczenia z baza danych jest zły login czy złe hasło.

@Varran:

Wielu securitowców by bardzo świadomie nie odróżniało tego w negatywnym komunikacie, po co włamującym się ułatwiać

0
ZrobieDobrze napisał(a):

Wielu securitowców by bardzo świadomie nie odróżniało tego w negatywnym komunikacie, po co włamującym się ułatwiać

Tu nie o to chodzi, chodzi o ćwiczenie, wyprawkę.

4

W samej aplikacji nie dostaniesz co dokładnie jest przyczyną, jedynie w logach możesz sprawdzić co się stało.

Do logów możesz się dostać w następujący sposób:

https://learn.microsoft.com/pl-pl/sql/relational-databases/performance/view-the-sql-server-error-log-sql-server-management-studio?view=sql-server-2017

Komunikat wygląda tak:

screenshot-20221119192031.png

0

@Wilktar: dzięki.

Hmm dziwne, wydawało mi się ze musi gdzieś coś być aby z poziomu aplikacji móc to rozróżnić.

3

owszem jest i nawet wkleiłeś tabelkę która ci te kody podaje.
Dla twojego przypadku jest to kod nr 1 "Error information is not available"
Twoja aplikacja dostaje taki komunikat zwrotny ponieważ serwer nie ma pojęcia kim ona jest co automatycznie implikuje do tego że serwer uznaje aplikacje za coś nie autoryzowanego do otrzymania informacji.

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