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 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 (1 - 2)
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
greenway
post
Post #3





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

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


Dziękuje za odpowiedź. Jednak nie chce robić następnego tematy, a mam pewne pytanie. Chciałbym zrobić taki malutki system newsów. Chcę, aby po wejściu w PA można było dodawać i edytować newsy. Newsy zapisuje do pliku newsy.php, a szkielet newsa ma następującą postać:

newsy.php
Kod
<div id="colTwo">
     <div class="post">
     <h1>Elo !</h1>
     <p>Taki test</p>
     </div>
     </div>

Chodzi mi o to, aby dopisywać do newsy.php następny taki szkielet, ale z inną treścią. Czy jest takie coś możliwe ? Jeśli tak, mogę prosić o podpowiedź gdzie zajrzeć, albo co wykorzystać. Co prawda wolałbym to zrobić poprzez MySQL, ale wtedy pewnie divy i cała strona mi się rozleci. Pjoona biggrin.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 16:22