Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Szyfrowanie danych a może całej bazy
Forum PHP.pl > Forum > Przedszkole
apkc
Witam.
Mam taką sytuację -
Serwerem MySQL zarządza obca mi osoba. Na jej serwerze chcę umieścić bazę, ale niechcę aby Ta osoba mogła przeglądać zawartość tej bazy. W jaki łatwy i szybki sposób mogę zaszyfrować tą bazę?
Pozdrawiam
modern-web
Bazy nie zaszyfrujesz. Możesz jedynie hashować wysyłane do niej dane.
Skorzystać z algorytmów mieszających MD5() lub SHA1(). Dodaj do tego własny, unikatowy klucz i dzięki temu trudno będzie odkodować te dane.

Pozdrawiam!
tehaha
a o jaki stopień zabezpieczenia Ci chodzi i jakiego typu dane chcesz zabezpieczać?

Też nie wiem, po co....ale skoro ma taką potrzebę, może spróbuj czymś takim: http://www.phpclasses.org/package/6260-PHP...-databases.html
modern-web
Podejrzewam, że ma bazę danych u znajomego i chce zabezpieczyć WSZYSTKO - nie tylko hasła użytkowników (o ile istnieją). Ale warto postawić sobie pytanie - PO CO?
vokiel
Cytat(modern-web @ 20.12.2010, 20:05:50 ) *
Bazy nie zaszyfrujesz. Możesz jedynie hashować wysyłane do niej dane.
Skorzystać z algorytmów mieszających MD5() lub SHA1(). Dodaj do tego własny, unikatowy klucz i dzięki temu trudno będzie odkodować te dane.

Pozdrawiam!

Chyba nie widzisz różnicy w szyfrowaniu a w haszowaniu.
Kod
modern-web -> md5('modern-web') -> f3d7a6860f2922fe58b4da5377b411b0

Jak wrócisz z tego hasza do modern-web (pomijając tablice tęczowe i bruteforce)? Gdzie użyjesz tu unikatowego klucza?

apkc chce szyfrować dane, aby sam mógł je później odczytać (odszyfrować), a żeby tej czynności nie mógł zrobić administrator bazy. Do tego masz w PHP Mcrypt, który umożliwia szyfrowanie za pomocą wielu algorytmów (3DES, BLOWFISH, TWOFISH etc).
Crozin
Co masz na myśli pisząc "niechcę (to się osobno pisze!) aby Ta (to zaś z małej - to nie jest zwrot grzecznościowy) osoba mogła przeglądać zawartość tej bazy"? Aby w ogóle nie miała żadnej możliwości odczytania niczego? Czy aby nie mogła wykonywać zapytań SELECT a jedynie INSERT?
Mephistofeles
Chodzi o to, że administrator może przejąć kontrolę nad serwerem i zobaczyć bazę. Problem w tym, że szyfrując ją ograniczysz sobie możliwości bazy do minimum, wszystkie obliczenia, które mogą być wykonane przez silnik bazy będzie musiał wykonać interpreter PHP.
apkc
Cytat(vokiel @ 20.12.2010, 20:41:34 ) *
Chyba nie widzisz różnicy w szyfrowaniu a w haszowaniu.
Kod
modern-web -> md5('modern-web') -> f3d7a6860f2922fe58b4da5377b411b0

Jak wrócisz z tego hasza do modern-web (pomijając tablice tęczowe i bruteforce)? Gdzie użyjesz tu unikatowego klucza?

apkc chce szyfrować dane, aby sam mógł je później odczytać (odszyfrować), a żeby tej czynności nie mógł zrobić administrator bazy. Do tego masz w PHP Mcrypt, który umożliwia szyfrowanie za pomocą wielu algorytmów (3DES, BLOWFISH, TWOFISH etc).


Dokładnie oto mi chodzi. Nie chcę aby te dane mógł odczytać administrator bazy, może jedynie po za tymi które chcę udostępnić. Myślałem że to było oczywiste. Nie wiem po co te różne domysły. DZIĘKI vokiel oczywiście poczytam o MCRYPT, ale mógłbyś powiedzieć kilka słów więcej?
vokiel
Myślę, że musisz oddzielić sobie te dane, które są na prawdę ważne, od tych mniej. Szyfrować te pierwsze. Do tego możesz robić sobie sumę kontrolną kolumn danego rekordu i zapisywać w ostatniej celem sprawdzenia poprawności danych.

Typy kolumn nie będą odpowiadały typom przechowywanych danych (w sensie bezpośrednio), czyli nr telefonu, choć jest liczbą, po zaszyfrowaniu staje się stringiem. Niestety, jak zauważył Mephistofeles część operacji, które można wykonać po stronie bazy danych nie będzie dostępna, jak chociażby sumowanie, wyszukiwanie w tekście etc.

Jeśli zdecydujesz się na szyfrowanie wszystkich danych, to możesz się pokusić o własną klasę do obsługi DB, w której przed zapisem danych automatycznie poddasz je szyfrowaniu, a po odczytaniu z bazy - deszyfrowaniu.
Crozin
Cytat
Myślałem że to było oczywiste.
Nie jest to do końca oczywiste, bo kilka zdań wprowadza mały mętlik i sugeruje, że możesz próbować zrobić co niemożliwego, albo zabierasz się za to od złej strony.

Odpowiedz na te pytania to na 100% dostaniesz bardziej konkretne odpowiedzi.

1. Czy ta osoba trzecia, będąca administratorem serwera MySQL jest administratorem całej maszyny? Czy ma dostęp do rzeczy takich jak na przykład pliki PHP (o ile w ogóle o tym mowa)?
2. Kto/co i skąd ma mieć jaki dostęp do danych z bazy.
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.