Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kodowanie danych przed userami MySQL
binio
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 23.06.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




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ł.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 13:06