Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Logowanie - Bezpieczeństwo to podstawa!, Logowanie wymienianie się zabezpieczeniami.
seba199696
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 4.01.2011

Ostrzeżenie: (20%)
X----


Cześć. Poszukuję skryptu do logowania użytkownika [PHP/MYSQL].

Stwórzmy razem dobry darmowy skrypt.
Może ktoś wkleić dobrego gotowca? Razem będziemy ulepszać zabezpieczenia skryptu przed atakami.
Dużo jest gotowców lecz nie są bezpieczne (IMG:style_emoticons/default/smile.gif)

Co najlepiej wykorzystać?

Ten post edytował seba199696 21.05.2011, 23:35:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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. $login = htmlspecialchars(stripslashes(strip_tags(trim($_POST["login"]))));
  2. $haslo = htmlspecialchars(stripslashes(strip_tags(trim($_POST["haslo"]))));


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.

  1. <?php


Miło, że sesja nie jest w ogóle zabezpieczona przed przechwyceniem...

  1. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  2. login='$login' and haslo='$haslo' and status=0");
  3.  
  4. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  5. if (mysql_num_rows($wynik) == 1) {
  6. $informacja = mysql_fetch_array($wynik);
  7. 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>';
  8. }
  9.  
  10. // jeżeli wszystko jest dobrze, użytkownik się loguje
  11. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  12. 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.
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: 6.10.2025 - 11:10