Skrypt do bezpiecznego logowania

Odpowiedz Nowy wątek
2015-09-29 18:39
0

Witam serdecznie,
Znalazłem w internecie ostatnio taki skrypt do bezpiecznego logowania: http://m.wikihow.com/Create-a[...]Login-Script-in-PHP-and-MySQL co o nim myślicie? W połączeniu z PDO wyglada chyba ciekawie? Znacie może jakieś ciekawsze rozwiązania?

Pozostało 580 znaków

2015-09-29 18:58
1

Na pewno nie rozwiązuje to wszystkich możliwych problemów, pierwsze co mi przyszło do głowy: CSRF przy wylogowywaniu. Jest tylko notka:

Note: it might be a good idea to add CSRF protection here in case someone sends a link hidden in this page somehow. For more information about CSRF you could visit Coding Horror.

Czyli jakaś świadomość istnieje, chociaż tyle ;) Ale skoro już wiedzą to mogliby opisać.

Poza tym w kodzie jest błąd:

if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password, salt) VALUES (?, ?, ?, ?)")) {
            $insert_stmt->bind_param('ssss', $username, $email, $password, $random_salt);
            // Execute the prepared query.
            if (! $insert_stmt->execute()) {
                header('Location: ../error.php?err=Registration failure: INSERT');
            }
        }
        header('Location: ./register_success.php');

Niepowodzenie insertu i tak przekieruje pod register_success, bo jedno Location nadpisze drugie.

Nie ma nic wspomniane nt. niebezpieczeństwa związanego z podawaniem treści przy stosowaniu nagłówka Location (co nie dziwi, skoro popełnili ten błąd).

Dwa pierwsze tematy jakie mi przyszły do głowy i jeden to po prostu lekka wada, a drugi to błąd. Odradzam korzystanie, choć znalezione błędy może nie są tragedią i raczej nie doprowadzą do wypływu informacji. Ale po prostu dalej nie weryfikuję tego kodu, więc może być coś gorszego.


Pozostało 580 znaków

2015-09-29 19:09
0

A masz może jakieś sprawdzone, "gotowe" rozwiazanie które nie zawiera błędów? :) kurczę, to wydawało mi się dobre ;)

Pozostało 580 znaków

2015-09-29 22:58
0

https://github.com/panique/php-login-advanced to jest lepsze?:)

Przeczytaj opis repo zanim zaczniesz używać. - Tumeg 2015-09-30 21:11

Pozostało 580 znaków

2015-10-06 00:01
Bendnarecki
0

Nie rozumiem, z czym problem, skrypt do bezpiecznego logowania?
A jaki skrypt jest niebezpieczny, tylko dziurawy czy bardziej dziurawy może być bezmyślny który jest po prostu wklejony z gotowca?
Żeby być w 100% pewnym trzeba postawić SSL by nie było możliwości sniffowania
Poza tym tworzysz sesje zamiast ciastka
session_start()
oczywiście sama sesja to nie jest 100% bezpieczeństwa najlepiej jest zrobić sesje w sesji i na Wyrażeniach warunkowych stworzyć kolizje której algorytm podparty będzie na kolizji zdarzeń.
Czyli np jak ktoś przechwyci sesje w jakiś sposób, np przez błąd XSS
to wywołanie kolizji w sesji sprawi że ma mniejsze prawdopodobieństwo na zalogowanie się. Co to znaczy
np skrypt będzie porównywał nie tylko ID sesji ale również wersje przeglądarki czy numer IP i wsadzasz jedną sesje w drugą. Nawet jak ktoś spreparuje nagłówek http , to mając inny ip który zapisał się do sesji nie przejdzie procesu logowania. Poza tym otagować funkcją sha256 parametry logowania jak i w bazie trzymać zaszyfrowane hasła, przełączyć opcje cookie set without httponly flag bo domyślnie jest bez flagi.
Dzięki temu nie będzie można odczytać zawartości ciastek. filtruj tagi w skrptach komentarzy i w każdym skrypcie output i zapisywanym do bazy funkcją html_Special_chars . Zawsze oczywiście to można obejść używając kodowania base 64 czy przepuscić do przez filtry parsera, ale byle laik script kiddes na pewno tego nie zrobi

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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