Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie danych przed userami MySQL
Forum PHP.pl > Forum > PHP
binio
Witam

Mam nastepujacy problem.

Napisalem skrypt dzieki ktoremu mozna wprowadzac wyplaty do bazy danych.
Szef jednak wymyslil ze te dane musza byc tajne (jest trzech informatykow i ktos moglby podejrzec bezposredniow bazie).

Wymyslilem patent dzieki ktoremu wprowadzane dane sa wymnazane przez pewien ciąg liczb (wprowadzany tylko w formularzu ale nie zapisywany do bazy - zna go tylko szef) i dopiero wprowadzane do bazy. Aby zobaczyc poprawne kwoty szef musi wpisac kod usera i wyswietla sie wyplaty.

Inny programista ogladajac dane widzi cyfry z kosmosu i jest ok. Pensje utajnione. Niestety nie wyklucza to ingerencji w kodzie i podpiecia funkcji ktora przechwyci ów kod ktory koduje dane a co za tym idzie pozna kwoty wyplat.

Myslalem o zakodowaniu samego kawalka kodu ktory wprowadza dane jakims crypterem ale nie wiem czy to dobry pomysł.

Moze macie jakies pomysły aby rozwiazac to zagadnienie.

Z gory dzieki za pomoc
kszychu
A nie prosciej pobawic sie uprawnieniami w samym mysqlu?
binio
Cytat(kszychu @ 2004-11-04 12:07:20)
A nie prosciej pobawic sie uprawnieniami w samym mysqlu?

Niestety administratora linuxa to ja nie zablokuje w uprawnieniami sad.gif
sf
Zapisać dane na innym komputerze. Jeżeli ktoś ma roota na danym serwerze to zawsze może podpiąć coś co przechwyci wprowadzane dane.
Kocurro
JESLI SZEF NIE UFA INFORMATYKOWI TO POWINIEN GO WYRZUCIC exclamation.gif!

Bo tak naprawde pelna wladze w firmie to maja informatycy oraz sekretarki.

A jesli ktos ma uprawnienia root (tak jak zaznaczyl kolega) to moze zrobic co mu sie tylko podoba i ani Ty ani szegf nie skapujecie sie co jest grane.

Poza tym taka forma kodowania jak Ty proponujesz odpada - blad w kodzie i dane przepadaja.

Jesli chcecie je zabezpieczyc to polecam serwer bazodanowy za 30 tysiecy ze sprzetowa kryptologia... (jako oddzielna jednostka obslugujaca tylko baze danych - info dla tych co nie wiedza z czym to sie je...)

ale chyab taniej jest wymienic informatykow...

Pozdrawiam,
binio
Cytat(Prometeus @ 2004-11-04 17:51:19)
JESLI SZEF NIE UFA INFORMATYKOWI TO POWINIEN GO WYRZUCIC exclamation.gif!

Bo tak naprawde pelna wladze w firmie to maja informatycy oraz sekretarki.

A jesli ktos ma uprawnienia root (tak jak zaznaczyl kolega) to moze zrobic co mu sie tylko podoba i ani Ty ani szegf nie skapujecie sie co jest grane.

Poza tym taka forma kodowania jak Ty proponujesz odpada - blad w kodzie i dane przepadaja.

Jesli chcecie je zabezpieczyc to polecam serwer bazodanowy za 30 tysiecy ze sprzetowa kryptologia... (jako oddzielna jednostka obslugujaca tylko baze danych - info dla tych co nie wiedza z czym to sie je...)

ale chyab taniej jest wymienic informatykow...

Pozdrawiam,

Dzieki za takie rady ale jesli chciałbym oszukać szefa czy ktoś z moich kolegów to nie wypisywałbym tu lamentów tylko olał sprawę i zrobił najprostrzym sposobem. Chcę znależć mozliwie najlepsze rozwiazanie. Przeciez za pare tygodni moze przyjsc kolejny informatyk do pracy i wolałbym aby system był bezpieczny. Kto wie co goscia moze podkusic ...

To Ty wypisujesz głupoty...
Przeca wszystkie dane ma ksiegowa w programie ksiegowym a tylko aplikacja internetowa ma ulatwic jej i szefowi wglad do danych (szef przebywa w IE). Jak wpisze dane i jej sie zle wyswietla to chyba poprawi nie?questionmark.gif

Co ma root do gadania jak ja skrypt zakoduje jakism crypterem ? Przywroci skladnie do stanu normalnego? Nie rozumiem Cię kolego.

A za takie rady jak Ty udzieliles to dzieki bardzo,
jak nie masz sie gdzie wyzalac to idz do knajpy a nie udzielaj sie na forum. Szukam mozliwie najlepszego rozwiazania i o takie rady prosiłem ...
wojto
Cytat(kszychu @ 2004-11-04 12:07:20)
A nie prosciej pobawic sie uprawnieniami w samym mysqlu?

jesli nie masz mozliwosci zarzadzania userami BD, to moze pojsc w troche inna strone..
moze wrzucic kod funkcji kodujacej i dodajacej do bazy do jakiegos pliku, ktory nie jest widoczny dla danych informatykow (jakis folder nadrzedny), tylko dla ciebie. dostep do tego pliku mialbys tylko ty i skrypty.
chyba masz mozliwosc zmiany uprawnien dla folderow w apache?
binio
Cytat(wojto @ 2004-11-05 09:30:19)
( ... )
moze wrzucic kod funkcji kodujacej i dodajacej do bazy do jakiegos pliku, ktory nie jest widoczny dla danych informatykow (jakis folder nadrzedny), tylko dla ciebie. dostep do tego pliku mialbys tylko ty i skrypty.
chyba masz mozliwosc zmiany uprawnien dla folderow w apache?

Hmm, to juz jakies rozwiazanie jest, na dodatek moge ów plik jakios zakodowac aby kod był nieczytelny. Sproboje cosik takiego zrobic.
silent
Cytat(binio @ 2004-11-05 10:30:40)
Cytat(wojto @ 2004-11-05 09:30:19)
( ... )
moze wrzucic kod funkcji kodujacej i dodajacej do bazy do jakiegos pliku, ktory nie jest widoczny dla danych informatykow (jakis folder nadrzedny), tylko dla ciebie. dostep do tego pliku mialbys tylko ty i skrypty.
chyba masz mozliwosc zmiany uprawnien dla folderow w apache?

Hmm, to juz jakies rozwiazanie jest, na dodatek moge ów plik jakios zakodowac aby kod był nieczytelny. Sproboje cosik takiego zrobic.

Tak, na pewno znajdziesz taki katalog "nadrzędny" do którego nie będzie miał dostępu root. Jeśli szef tak bardzo chce utajnić te informacje, to niech sobie to trzyma na swoim laptopie i tyle.
Zgadzam się z wypowiedzią Prometeusa - jeśli szef nie ufa informatykom, to niech ich zmieni.
Binio - piszesz, że może się pojawić nowy informatyk i namieszać - a dlaczego nowy informatyk dostaje uprawnienia roota (tak rozumiem Twoją wypowiedź)? Jeśli macie serwer linuxowy to system ten oferuje bardzo rozbudowane zarządzanie prawami użytkowników. Jeśli nie umiecie tego wykorzystać, aby zbudować odpowiednie grupy userów z odpowiednimi do ich funkcji uprawnieniami to przykro mi bardzo, ale nic dobrego nie wymyślisz.

Cytat
Niestety administratora linuxa to ja nie zablokuje w uprawnieniami sad.gif

Ta wypowiedź naprawdę jest śmieszna - jak administratorem może być ktoś, przed kim chce się coś ukryć?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
kszychu
Cytat(binio @ 2004-11-05 10:30:40)
Cytat(wojto @ 2004-11-05 09:30:19)
( ... )
moze wrzucic kod funkcji kodujacej i dodajacej do bazy do jakiegos pliku, ktory nie jest widoczny dla danych informatykow (jakis folder nadrzedny), tylko dla ciebie. dostep do tego pliku mialbys tylko ty i skrypty.
chyba masz mozliwosc zmiany uprawnien dla folderow w apache?

Hmm, to juz jakies rozwiazanie jest, na dodatek moge ów plik jakios zakodowac aby kod był nieczytelny. Sproboje cosik takiego zrobic.

Root to bóg na serwerze, a przed bogiem niczego nie ukryjesz...

BTW, im bardziej coś bedzie zakodowane, tym większa pokusa dla admina by sprawdzić co też tak ważnego tam się znajduje.
wojto
Cytat
Tak, na pewno znajdziesz taki katalog "nadrzędny" do którego nie będzie miał dostępu root.
nie chodzilo mi o ukrycie plikow przed rootem, bo chyba wiadomo, ze to jest nieosiagalne.
Chodzilo mi o ukrycie pliku przed innymi informatykami. (zrezta to pisales w swoim poscie)
Czyli wszyscy informatycy mieli by te same uprawnienia, ale ten jeden glowny mialby dodatkowo dostep do jeszcze jednego pliku, to wystarczy by zabazwpieczyc.
silent
Cytat(wojto @ 2004-11-05 17:57:12)
nie chodzilo mi o ukrycie plikow przed rootem, bo chyba wiadomo, ze to jest nieosiagalne.

No ale z tego co pisze Binio ja rozumiem, że Ci pozostali informatycy którzy nie powinni mieć dostępu do tych danych mają dostęp do konta roota, więc o czym mowa? Gdyby goście nie mieli dostępu do roota to nie byłoby tej dyskusji, bo rozwiązanie byłoby banalne.
DeyV
ale po co pisać własny algorytm kodujący, jak można skorzystać z bibliotek dostępnych w MySQL ?

  1. SELECT @password := 'my password';
  2.  
  3. SELECT @t := AES_ENCRYPT( 'text', @password ) ;
  4.  
  5. SELECT @t, AES_DECRYPT( @t , @password);


Cytat("manual")
AES_ENCRYPT() and AES_DECRYPT() were added in MySQL 4.0.2, and can be considered the most cryptographically secure encryption functions currently available in MySQL


A skąd brać hasło?
Może to być ciąg znaków, znany tylko 'szefowi'. Problem jednak pojawi się, gdyby je zapomniał - tracimy dane.

Możemy jednak przygotować osobną tabelę,
Users
id , login, pass, zaszyfrowanyDbKey

Gdzie zaszyfrowanyDbKey to AES_ENCRYPT( 'dbkey', pass ) ;
Rozwiazanie takie pozwala nam na
A ) utworzenie wielu profili osób mających dostęp do danych
B ) pozwalamy im na zmianę hasła (wystarczy pobiem, by taka osoba zalogowała się, wtedy rozkodowujemy DbKey, prosimy o podanie nowego hasła do konta, i za jego pomocą generujemy nowy zaszyfrowanyDbKey

Uwagi.
Transmisja musi iść po HTTPS, to jedyne rozwiązanie, które być może ograniczy dostęp do tych danych administratorowi serwera.
Dane przechowywane w sesji (głownie login i hasło do konta) musza być również zaszyfrowane, tak by ktoś ich zbyt łatwo nie podejżał.
binio
Chyba musze cos wytlumaczyc bo dyskusja w zla droge zmierza.

Mam katalog A, w ktorym siedza pliki do mojego skryptu, oraz cała masa innych plikow z pewnej aplikacji. Do tego katalogu ma dostep kilka innych osob gdyz pracuja na tym samym projekcie. Nie jestem adminem serwera wiec nie moge zbytnio kombinowac z ustawieniami dlatego szukam racjonalnego rozwiazania z kodowaniem danych.

Nigdzie nie jest napisane ze admin musi znac sie na php itp ale akurat u nas sie zna. Jesli udaloby mi sie tak namieszac w kodzie ze gosc by nie mogl rozkodowac to niech sobie uprawnienie w nos wsadzi. ZEND czy cos podobnego zamienia kod na strasznie zamieszany wiec przechwycenie danych bedzie ciezkie dla kogokolwiek - mam racje? Nie sprawdzalem jeszcze tego sposobu wiec moge sie mylic.

Jak uda mi sie cos z tym wykombinowac dam znac.

P.S. Pisane tekstów w stylu "jak szed nie ufa informatykowi to niech go zwolni" jest nie na miejscu, gdyby tak było to nie wrzucałby tego do bazy tylko kadrowa by trzymała nie? Ale skoro juz wrzuca do bazy to che aby bylo bezpieczne nie?
Poza tym jak juz tu ktos madze napisal - im bardziej tajemniczy kod tym wieksza pokusa aby sprawdzic co robi.

Cytat
Cytat

Niestety administratora linuxa to ja nie zablokuje w uprawnieniami 


Ta wypowiedź naprawdę jest śmieszna - jak administratorem może być ktoś, przed kim chce się coś ukryć?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?


To raczej twoja wypowiedz jest bez sensu, czytaj ze zrozumieniem, caly czas tlumacze ze chce zakodowac skrypt a nie ukrywac pliki czy wpisy w bazie przed adminem. Chce tak zakodowac ze jesli np admin zobaczy to nic mu to nie powie. Bo zobaczy na pewno!!!
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.