Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Bezpieczeństwo skryptu
greenway
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.06.2008

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


Witam ponownie. Chciałbym prosić o sprawdzenie, a raczej odpowiedź, która pozwoli mi rozwiać wątpliwości związane z moim skryptem logowania. Wykodziłem takie proste logowanie do PA oparte o sesje. Nie o bazę danych. Nie jestem, jednak przekonany co do bezpieczeństwa tego skryptu. Czy nadaje się on do logowania i jest bezpieczny ?

login.html
Kod
<html>
<head>
    <title>Prosta strona logowania</title>
</head>
<body>
<p>
    <a href="tajne.php">Chroniona zawartosć</a>
</p>
<p>Logowanie!</p>
<form action="autoryzacja.php" method="post">
    Nazwa użytkownika

    <input type="text" name="username">

    Hasło

    <input type="password" name="password">

    <input type="hidden" name="login">

    <input type="submit" value="Wyslij" />
    <input type="reset" value="Wyczysć" />
</form>
</body>
</html>


autoryzacja.php
Kod
<?php
    session_start();
    // user jest zalogowany
    if (isset($_POST['login'])){
       if (isset($_POST['username']) && ($_POST['username']
          == 'admin') && isset($_POST['password'])
       && ($_POST['password']
          == 'adminlol')) {
          $_SESSION['Autentykacja'] = 1;
       }
       else{
          $_SESSION['Autentykacja'] = 0;
       }
       session_write_close();
       header('Location: tajne.php');
    }
    // user nie jest zalogowany
    if (isset($_GET['logout'])){
       session_destroy();
       header('Location: login.html');
    }
?>


tajne.php
Kod
<?php
    session_start();
?>
<html><head><title>Chroniona strona</title></head>
<body>
<?php
    if (isset($_SESSION['Autentykacja'])
       && ($_SESSION['Autentykacja'] == 1)){
?>
<h2>Chroniona zawartość</h2>
<p>Witaj! Ponieważ jesteś zalogowanym użytkownikem, możesz wyświetlić
    chronioną zawartość strony.</p>
<p>Możesz również się wylogować za pomocą łącza
    <a href="autoryzacja.php?logout">Wyloguj</a>
</p>
<?php
    }
    else{
?>
<h2>Nie jesteś zalogowanym użytkownikiem</h2>
<p>Witaj! Ponieważ nie jesteś zalogowanym użytkownikiem, nie możesz
    wyświetlić chronionej zawartości strony.</p>
<p>Ale możesz się zalogować za pomocą łącza <a href="login.html">Zaloguj</a></p>
<?php
    }
?>
</body>
</html>


Każdy komentarz oraz uwaga mile widziane. Jestem w tych sprawach początkujący, dlatego proszę was o radę. Pjoona (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował greenway 2.07.2008, 19:53:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


W tym wypadku jest to bezpieczne (zakładając, że sesje nie są we współdzielonym folderze na serwerze), bo nie dodajesz nic do bazy (w takim wypadku trzeba by było pozbyć się znaków specjalnych) ani danych nie wyświetlasz na ekranie (strip_tags lub htmlspecialchars).

Tylko jedna taka uwaga - wylogowuj tylko wtedy, kiedy użytkownik jest zalogowany i w przypadku innym niż wysłanie danych przez post. To znaczy dane mogę wysłać, jednocześnie przez post, ustawiając zmienną get o wylogowaniu. Warto byłoby wyświetlić jakiś komunikat. Co prawda może to i sytuacja, która nigdy nie nastąpi, ale może fizycznie nastąpić i w takim wypadku uważam, że warto o nią zadbać.
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: 4.10.2025 - 03:51