Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Projekt portfela danych dostępowych
Forum PHP.pl > Forum > PHP
Sephirus
Witam,

Na potrzeby wewnętrzne pewnej firmy mam zrobić coś co można by nazwać portfelem danych dostępowych. Ma to być mały panel w sieci lokalnej i dostępnej przez VPN pozwalający na bezpieczne przechowywanie różnych haseł i danych dostępowych pracowników (IT i nie tylko). W przyszłości ma być rozszerzony także o dokumenty.

Idea jest taka by na komputerze danego pracownika nie znajdywały się żadne hasła, ważne dane itd. Mają one być ukryte w sejfie jakim ma być ten panel. Przykładowo dla administratorów serwerów IT byłyby to dane dostępowe do serwerów, baz danych itd. itp.

Ja osobiście to widzę tak:
- panel z dostępem po HTTPS,
- dane zapisywane w bazie w formie zaszyfrowanej,
- każdy pracownik posiada login, hasło oraz klucz i tymi trzema danymi loguje się do panelu,
- klucz indywidualny dla każdego użytkownika pozwalający na odszyfrowanie danych z panelu, generowany losowo przy pierwszym logowaniu i nigdzie nie zapisywany w systemie,
- odpowiednio mocne hasło ale w formie "do zapamiętania" (przymus - nie można nigdzie zapisywać),
- klucz w formie pliku przechowywany na osobistym pendrive pracownika,
- odpowiednio zaplanowany front-end nie zapisujący się w cache'u przeglądarki.

Takie są moje założenia. Czyli pracownicy latający z pendrivami na smyczach i mający dostęp do panelu. Czy o czymś zapomniałem?

Macie jakieś pomysły, sugestie - widzicie w tych założeniach jakiś błąd?

Niedługo zaczynam a projektuje to z lekką temperaturą więc wolę się poradzić wink.gif
Kofel
Jeśli ma być uber pro kozak, to zrób jeszcze szyfrowanie stringów po stronie przeglądarki. Sztuka dla sztuki tongue.gif
Sephirus
Nie musi być "uber pro kozak" tongue.gif takie założenia popełniłem po wytycznych klienta tongue.gif

"Szyfrowanie stringów po stronie przeglądarki" - ciekawe ciekawe ;P
Kofel
Wszystko ma swoje plusy i minusy. Założenie, że użytkownik logując się do panelu musi podać klucz, aby była możliwość odszyfrowania haseł, stwarza problem. Ten klucz trzeba jakoś przechować w sesji. Dlatego ja bym się skupił, żeby skrypt w frontendzie pytał użytkownika o klucz i dopiero odszyfrował hasła. I w ogóle, najlepiej jakbyś nie sprawdzał poprawność klucza. W sumie nie masz jak to zrobić. smile.gif Po prostu, użytkownik podając nie poprawny klucz, dostaje nie poprawne wyniki odkodowania tongue.gif

Edit:
I ma to działać też w drugą stronę. Jeśli użytkownik zdecyduje się dodać nowe hasło do bazy to wpisuje te wszystkie literki do formularza, klika "submit", wtedy Twój skrypt ma za zadanie:
- poprosić użytkownika o klucz
- zaszyfrować jakimś algorytmem
- wrzucić do formularza zaszyfrowany string
- wykonać submit

Rozwiązanie to wymaga oczywiście JS, ale... tym się raczej nie przejmujemy : )
Sephirus
- Klucz trzymany w sesji

Ok masz rację nie wystarczy go tak po prostu przechowywać w sesji bo wówczas jest zapisywany w pliku sesji na serwerze ale podawanie klucza za każdym odczytem danych to koszmar dla userów... hmmm

A gdyby po odebraniu klucza (podczas logowania) utworzyć losowy ciąg (nowy klucz numer 2), którym można by było zaszyfrować klucz główny. Klucz numer 2 zostawić w sesji a zaszyfrowany klucz główny w ciastku np.?

- Sprawdzanie poprawności klucza

Tu się nie zgadzam - IMO da się sprawdzić jego poprawność w miarę bezpiecznie. Wystarczy podczas generacji zapisać w relacji z użytkownikiem jakieś losowe dane zaszyfrowane nim wraz z ich funkcją skrótu. Ważne by dane były jak najmniejsze (krótsze od klucza). Po podaniu klucza, rozszyfrowujemy te dane, używamy funkcję skrótu i sprawdzamy czy się zgadza z zapisaną.

Zgadzam się z tym z kolei, że najlepiej by było nie sprawdzać, ale z tego co pamiętam to chyba chcieli mieć info o tym, żeby użytkownik nie mógł się zalogować podając błędny klucz... wszystko zależy od założeń - ale sprawdzę to - sam bym wolał nie sprawdzać smile.gif

- Szyfrowanie w formularzu

to odpada totalnie - przede wszystkim zakładam HTTPS - to powinno wystarczyć, po drugie w późniejszym założeniu mają to też być pliki.

Dzięki wielkie za sugestie
Kofel
Cytat(Sephirus @ 14.12.2012, 16:33:30 ) *
- Szyfrowanie w formularzu

to odpada totalnie - przede wszystkim zakładam HTTPS - to powinno wystarczyć, po drugie w późniejszym założeniu mają to też być pliki.

Chodziło mi o to, żeby hasło przed dodaniem szyfrować już u użytkownika.

W ogóle, źle zrozumiałeś mnie. Chciałem, żeby wszystkie operacje szyfrowania/deszyfrowania były wykonywane po stronie przeglądarki. Tak żeby klucz nigdy nie był wysyłany do serwera. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.