A na co komu takie logowanie całkowicie oderwane od jakiegokolwiek systemu? Przecież powinno być oczywiste, że mechanizm uwierzytelniania użytkownika to część platformy/systemu, na bazie której tworzymy naszą stronę WWW, a nie żaden samodzielny byt, bo tak to to nigdy nie będzie ani bezpieczne, ani działające. Generalnie na początek polecam bardziej pogłębienie swojej znajomości PHP oraz zasad działania poszczególnych funkcji, bo to, co z tym kodem wyrabiacie, to jakiś horror.
1. Brak sprawdzania ustawień
magic_quotes - na połowie serwerów ten kod nie będzie działać.
2. Gratulacje, dzięki temu genialnemu produktowi myśli informatycznej pojawiła się podatność na SQL Injection.
<?php
Miło, że sesja nie jest w ogóle zabezpieczona przed przechwyceniem...
login='$login' and haslo='$haslo' and status=0");
// jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
echo '<p>Nie aktywowałeś jeszcze swojego konta. Aby to zrobić, wejdź w swoją skrzynkę odbiorczą, a następnie znajdź wiadmość z linkiem aktywacyjnym i aktywuj swoje konto</p>'; }
// jeżeli wszystko jest dobrze, użytkownik się loguje
login='$login' and haslo='$haslo' and status=1");
Pomijając już wołający o pomstę do nieba sposób wstawiania danych do zapytania, który w połączeniu z pierwszym zacytowanym przeze mnie fragmentem kodu gwarantuje nam piękne SQL Injection, mamy tu "miszczostwo" optymalizacji. Po jakiego grzyba dokładnie ten sam wiersz jest później pobierany drugi raz? Czy nie prościej jest pobrać go raz, z pominięciem warunku
AND status=0 i sprawdzić ten status już w skrypcie?
Rid -> i na co komu SSL w komunikacji z bazą danych, kiedy kod PHP leży i kwiczy? Zapominasz o prostym fakcie, że żaden administrator profesjonalnego hostingu nie jest na tyle głupi, by pchać komunikację z bazami danych jawnie przez Internet. Nawet jeśli serwer bazodanowy i serwer WWW nie są tą samą maszyną, będą umieszczone w tej samej sieci chronionej pierdyliardem firewalli filtrujących ruch i posiadającej jeszcze wewnętrzne zabezpieczenia. Jak komuś to będzie potrzebne, to administrator dobry powie prosto i jasno: proszę łączyć się z bazą poprzez SSL, bo taka jest polityka bezpieczeństwa. W przeciwnym wypadku świadczy to tylko o zerowych kompetencjach autora takiego kodu, który nie ma zielonego pojęcia, co robi i dlaczego właściwie to robi.
Generalnie sorry, że rozbijam Wasze marzenia, ale napisanie bezpiecznego logowania to bułka z kromką, ale pod warunkiem, że się umie programować, umie myśleć i umie korzystać z poszczególnych narzędzi. Jak będziecie tak dorzucać różne głupoty nie mając zielonego pojęcia o tym, jak to właściwie działa, to nigdy nie osiągniecie zamierzonego efektu.