Cytat(pyro @ 4.06.2008, 21:15:32 )

No tak... to co pokazał autor to jest pewnie cały skrypt, prawda Shili?
To jeszcze powiedz autorowi jak powinien zabezpieczyć serwer bo przecież gdzieś to musi uruchomić

Autor pisze o systemie autoryzacji a Ty opowiadasz o XSS jakby to miało cokolwiek wspólnego.
Wracając do tematu to zależy co rozumiesz pod słowem "bezpieczny"... Ogólnie przy systemach autoryzacji powinieneś wziąć pod uwagę jeszcze takie rzeczy jak Brute-force i zastosować np.
1. Po 3 nieudanych próbach - kolejne próby dostępne co minutę.
2. Max. 10 nieudanych prób logowania, potem blokada konta, aktywacja poprzez mail do właściciela.
Poza tym, już niezwiązane z brute-force:
1. Zastosować SSL.
2. Uważać na tzw. replay attack poprzez nieużywanie danych, które umożliwiają trwały dostęp do zasobów. Szczególnie tzw. trwały login. Jeśli już używasz takich zabawek to nie trzymać w ciastkach hasła i loginu, nawet zhashowanych, tylko zastosować dodatkowy identyfikator zamiast loginu + token zamiast hasła.
3. Przy logowaniu zastosować hasła maskowane, klawiaturę ekranową...
No i oczywiście SQL Injection.
Wszystko zależy od tego jak bardzo "bezpieczny" chcesz mieć system autoryzacji.
Jeśli chodzi bezpośrednio o kod, który podałeś to:
1. Nie używaj Select *...
2. Dodaj LIMIT do zapytania
3. Nie sprawdzaj mysql_num_rows($query)>0 tylko mysql_num_rows($query)===1 -> zalogowany
4. Dodaj ograniczenie długości dla wprowadzanego hasła i loginu.
5. Nie trzymaj w sesji nazwy użytkownika tylko np. wspomniany już losowy identyfikator...
..i to tyle z rzeczy, które teraz przyszły mi do głowy.