[PHP] Logowanie [Zabezpieczenia]

0

Witam chciałbym zapytać czy mój poniższy kod na logowanie jest bezpieczny, jeżeli nie, prosiłbym o pomoc w zabezpieczeniu go.
Podejrzewam luki w sesjach, ale proszę was o pomoc.

PS: Oczywiście katalog z plikami .txt jest zabezpieczony przez serwer + .htaccess

<?php 
    if (isset($_SESSION['logon'])) {
        $NazwaPliku = "VVkskf6pqYgnWAGgKp0/MhElvZwhlm.txt";   
        $Otworz = fopen($NazwaPliku,"r");
        $Odczyt = fread($Otworz,filesize($NazwaPliku));
        echo("<br /><center><form action='downloads/MhElvZwhlm.exe'><input type='submit' value='--->>> Pobierz Serwer <<<---' class='submit' /></form></center>");
	    echo("<br /><center><form action='delete.php'><input type='submit' value='--->>> Skasuj Logi <<<---' class='submit' /></form></center>");
	    echo("<br /><center><a href='?logout=yes'>--->>> Wyloguj Się <<<---</a></center>");
        echo("<br /><br />".nl2br($Odczyt)."<br />");
        
        if ($_GET['logout'] == 'yes') {
            
            session_destroy();
            header('Location: index.php');
            }
        } else {
            
            if (isset($_POST['logme'])) {
                
    if (md5($_POST['nick']) == md5('ReptileReX') && md5($_POST['X09261x']) == md5('tnujf8tf')) {
       
       $_SESSION['logon'] = md5($_POST['nick']);
       header('Location: index.php');
    } else {
        
        Echo("<center>Podane dane są nieprawidłowe.</center>");
    }

            } else {
                
                echo ("<center><form action='' method='post'>");
                echo ("Nazwa: <input type=\"text\" class=\"input\" name=\"nick\" size=\"25\" /><br />");
                echo ("Hasło: &nbsp;&nbsp;<input type=\"password\" name=\"X09261x\" class=\"input\" size=\"25\" /><br /><br />");
                echo ("<input type=\"submit\" value=\"Zaloguj Mnie !\" name=\"logme\" class=\"submit\" />");
                echo ("</form></center>");
                
            }
        }
    
?>
0

dlaczego to jest przyklejone?? o.O

wciecia to widze losowo robiłeś,
kodu za bardzo nie przegladalem, ale czy to caly skrypt?
bo jeżeli cały, a pierwsza linijka to

if (isset($_SESSION['logon'])) {

to to nigdy nie ruszy dalej..

dodatkowo zauwaz ze po wykonaniu

header('Location: index.php');

caly skrypt wykona się do konca. w Twoim kodzie nie ma to znaczenia, ale czesto jest to niezła luka.. (polecam die(); po headerze z Location)

0

Tak cały skrypt, tylko że na początku jest session_start();, to chyba logiczne.
Ja pytam o to jak zabezpieczyć skrypt, a nie czy jest poprawny, bo poprawny jest i działa jak należy.

Ok dzięki, czekam na dalsze propozycje

0
 if (md5($_POST['nick']) == md5('ReptileReX') && md5($_POST['X09261x']) == md5('tnujf8tf')) {

wtf?

0

Jak już chcesz trzymać login i hasło w MD5 to trzeba porównywać tak:

if (MD5($_POST['nick']) == '5c37fa9c093adc91253cc2f0dff57dbf') {
   //...
}

W tej linijce którą podał bordeux tylko niepotrzebnie marnujesz zasoby, te MD5 po obu stronach można skrócić i na to samo wyjdzie.

0

weź wykasuj ciasteczka/użyj innej przeglądarki/zamknij przeglądarkę (nie kartę) i odpal znowu.
dalej działa?
jeżeli tak to wyjaśnij mi tą magię skąd bez sesji zawsze bierze Ci się $_SESSION['logon'] ? I jeżeli jakimś cudem to jest zawsze true - to po co ten warunek? :P

0

I przede wszystkim. Dajesz bezpośredni link do katalogu downloads, a w nim plik. Jeśli ktoś spisze sobie ten adres to bez żadnego logowania będzie mógł wszystkim owy plik udostępniać. Rozwiązanie: Skrypt force download by eLouai + sprawdzanie sesji na początku w tym skrypcie. W ten sposób pliki będą pchane za pośrednictwem skryptu PHP który w każdej chwili może odmówić udostępnienia.

0

Po wykasowaniu ciasteczek/zmianie przeglądarki nadal działa poprawnie ;).
Co do katalogu downloads nie przeszkadza, może być dostępny.

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