Logowanie - bardzo prosze o opinie

0

Zrobiłem prosty system logowania w PHP (z użyciem sesji):

Trzy pliki:

  • parentindex.htm - formularz HTML logowania
  • parentlog.php - plik sprawdza czy podany login i hasło wpisane w formularzu są dobre czy złe i w zalezności od tego nadaje wartość zmiennej sesyjnej
  • parent.php - odczytuje zmienną sesyjną i w zalezności od wartości tej zmiennej pokazuje właściwe informacje lub też nie

PLIK 1) Formularz logowania - parentindex.htm:

<FORM ACTION="parentlog.php" METHOD="POST">
    Login:<INPUT TYPE="TEXT" NAME="LOG">
    Password:<INPUT TYPE="password" NAME="PASS">
    <INPUT TYPE="submit" VALUE="Zaloguj"" 
</FORM>

PLIK 2) Plik parentlog.php - do tego pliku przesłany jest wpisany login i hasło, skrypt ma za zadanie sprawdzić czy podano dobry login i hasło, jezeli hasło i login się zgadzają wówczas zmienna sesyjna $_SESSION['badlog'] przyjmie wartość 2, jeżeli hasło i login się nie zgadzają $_SESSION['badlog']=0

<?PHP
  session_start();
  $_SESSION['badlog'] = 0;
  
  //dla uproszczenia nadałem przykładowe wartości, jednak $uzytkownik i $haslo
  //wczytane beda z pliku lub bazy
  $uzytkownik =  'test';
  $haslo =  'test';

 if ($_POST['LOG'] == $uzytkownik && $_POST['PASS'] == $haslo)
 {
    $_SESSION['badlog'] = 2;
    include 'parent.php'; //automatyczne przejście do trzecie pliku
 } else {
    echo 'zly login lub haslo';
 }
?>

PLIK 3) Właściwy plik parent.php, którego zawartość dostępona jest tylko po poprawnym zalogowaniu:

<?
session_start();   
if ($_SESSION['badlog'] != 2 && empty($_SESSION['badlog'])  )
       { echo 'Brak dostepu do strony'; } 
else {  echo 'Bardzo cenna zawartosc';}
?>

1. Prosze o komentarz, uwagi krytyczne ewentualnie alternatywne rozwiązania co do sposobu przedstawionego powyżej sposobu logowania, czy coś jeszcze muszę uwzględnić. Jest to dla mnie bardzo ważne - szczególnie z punktu widzenia bezpieczeństwa oraz optymalizacji.

  1. Chciałbym aby logowanie odbywało się w sposób bezpieczny, poprzez protokół SSL, dlatego chciałbym zapytać Czy muszę coś uwzględnić/zmienić w kodzie PHP jeżeli chce zrobić logowanie przez https, czy wszystko odbywa się na poziomie serwera ?

  2. Czy istnieją jakieś darmowe konta, które udostepniają PHP z obsługą protokołu SSL (MySQL to miły dodatek)

Z góry bardzo dziękuje za wszelkie konstruktywne odpowiedzi i opinie

0
Łukasz83 napisał(a)

PLIK 3) Właściwy plik parent.php, którego zawartość dostępona jest tylko po poprawnym zalogowaniu:

<?
session_start();   
if ($_SESSION['badlog'] != 2 && empty($_SESSION['badlog'])  )
       { echo 'Brak dostepu do strony'; } 
else {  echo 'Bardzo cenna zawartosc';}
?>

nie wczytywałem się ale na moje oko to przy takim warunku wystarczy wpisać parent.php w przeglądarkę żeby zobaczyć "Bardzo cenną zawartość"

0
Adamo napisał(a)

nie wczytywałem się ale na moje oko to przy takim warunku wystarczy wpisać parent.php w przeglądarkę żeby zobaczyć "Bardzo cenną zawartość"

Zabezpiecza przed tym zmienna sesyjna $_SESSION['badlog'], więc bardzo cenna zawartość nie powinna się wyświetlić (wówczas wyświetli się Brak dostępu) ...

0

aha, no fuckt - inaczej:
po podaniu złych danych wyświetli się strona

// aha, też nie bo empty zwraca false dla 0, mimo wszystko dla samej logiki powinna być tam alternatywa

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