(poczatkujacy) uzytkownicy bazy danych

0

Witam, moj pierwszy post.

Projektujemy w firmie aplikację oparta o baze danych, ktora ma uproscic i zautomatyzowac niektore procesy w firmie. Baza bedzie stala na PostgreSQL, aplikację piszemy w C#. Moje doświadczenie w aplikacjach bazodanowych jest zerowe, więc już na początku napotykam na trudności koncepcyjne. Jak rozwiązać problem logowania i weryfikacji uzytkownikow? Przychodza mi do glowy 2 rozwiazania, prosze o wskazanie lepszej, badz ewentualnych problemow na jakie moge napotkac przy wyborze ktorejs z nich.

  1. Kazdy rzeczywisty uzytkownik bedzie mial zalozonego usera w pg_user. Uzytkownik w oknie logowania wpisuje user/pass, ktore wrzucone sa do connection stringa. Albo sie loguje albo nie.

  2. Zakladam w bazie tabele UZYTKOWNICY. Uzytkownik w oknie logowania wpisuje usera i haslo, ktore nie sa wklepane do connection stringa (jest w nim jakis user i pass dla wszystkich taki sam). Aplikacja laczy sie z baza, nastepnie sprawdza czy jest taki user z takim passem w tabeli UZYTKOWNICY. Jesli nie, rozlacza z baza.

W przypadku pierwszego rozwiazania i tak bede musial zrobic dodatkowa tabele z uzytkownikami, gdyz chcialbym np aby miec w bazie ich telefony.

Jakies podpowiedzi?

3

2

0

Dzieki za konkretna odpowiedz. Pewnie jeszcze nie raz sie zwroce z prosba/pytaniem.

0

Przy rozwiązaniu (2)

  • każdy może podejrzeć parametry połączenia z bazą
  • w zwiazku z czym każdy może się do niej dostać, przeskanować tabelę z użytkownikami
  • i np. podać nieswoje hasło

Rozwiązanie odrobinę bezpieczniejsze:
a) w programie masz zapisane parametry użytkownika który ma tylko możliwość odpalenia procedury składowanej "zweryfikuj uzytkownika"
b) program łączy się z bazą przy pomocy użytkownika (a), wywołuje procedurę przesyłając parametry użytkownika z okna logowania i jeśli wszystko OK - otrzymuje z niej pełne parametry połączenia (użytkownik / hasło)
c) program odcina połączenie (a) i loguje się używając parametrów z (b)

Dodatkowo tabela użytkowników powinna przechowywać hasło w postaci zachaszowanej przy pomocy np. SHA-2 i soli:
http://www.obviex.com/samples/hash.aspx
https://crackstation.net/hashing-security.htm

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