Lepsza wersja połączenia z bazą danych

0

Witam,
zmieniam trochę swój kod i wykonałem połączenie z bazą danych, ale zastanawia mnie która z podanych poniżej czynności spowoduje szybsze i bezpieczniejsze połączenie.

Wersja 1

  1. Podczas tworzenia obiektu (w konstruktorze) łączę się z bazą danych i pobieram istotne informacje (nie zamykam połączenia).
  2. Dodaję jakiś rekord
  3. W destruktorze robię mysql_close

Wersja 2

  1. Podczas tworzenia obiektu (w konstruktorze) łączę się z bazą danych i pobieram istotne informacje (nie zamykam połączenia), oraz zamykam połączenie
  2. Każda operacja typu pobranie, usunięcie, zamiana, dodanie na nowo łączy się z bazą danych, wykonuje czynność i zamyka połączenie.

Tylko teraz tak. Teoretycznie w Wersji 1 zaletą jest szybsze działanie, ale połączenie jest otwarte cały czas więc bezpieczeństwo spada - mimo to z tego co pamiętam to destruktor jest wykonywany na końcu wykonywania skryptu.

Natomiast dla Wersji 2 jest odwrotnie - bezpieczniejsza, ale za każdym razem trzeba się łączyć.

Co myślicie o tych rozwiązaniach ? Które jest korzystniejsze, czyli szybsze i bezpieczniejsze ? Chyba że różnica w bezpieczeństwie jest znikoma.

0

nie widzę żadnej różnicy w bezpieczeństwie
drugie rozwiązanie jest imho po prostu głupie

jeśli by już wnikać głębiej (bo nie widzę tutaj żadnego sensownego scenariusza ataku), to drugi sposób jest nawet mniej bezpieczny bo dane logowania są przesyłane po kilka razy = większa niby szansa przechwycenia
poza tym to zależy w sumie jak się łączysz z tą bazą danych ale w większości przypadków połączenie jest zamykane na końcu skryptu automatycznie (nie musisz wywoływać ręcznie żadnego mysql_close)

0

Sposób #2 to zwykłe zawracanie gitary MySQLowi ciągłym otwieraniem połączenia, logowaniem się, etc. Druga wersja jest mniej bezpieczna chociażby dlatego, że cały czas hasło do bazy danych musi być używane, jak to unikalna_nazwa napisał. Osoby źle życzące i tak będą próbowały albo SQL Injection, przed czym zamykanie połączenia cię nie uchroni, albo wstrzyknięcia własnego kodu PHP (wtedy połączenie faktycznie będzie zamknięte, ale co powstrzymuje włamywacza przed wywołaniem jakiejś metody albo po prostu zrobieniem file_get_contents('config.php')?), albo też wrzucenia XSSa (tutaj często sama baza danych ma niewiele wspólnego ze sprawą, raczej sposób obrabiania danych pochodzących z niej). Nie ma co robić jakiś dziwnych fixów.

0

Polaczenie otwarte z baza danych nie stanowi zadnego zagrozenia tylko ty z tym co tam do niej wyslesz...

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