Wczoraj ktoś włamał się na mój blog i podmienił temat ostatniej notki (prawa pliku 644). Zastanawiam się jak to się stało. Administrator serwera stwierdził, że błąd leży jedynie w oskryptowaniu. Kawałek logów apacha
Cytat(access_log)
GET /?admin,usun,notke,./blog/Projekty/78b3fd596ca74f3427d3776085a64e25 HTTP/1.1
GET /?admin,usun,notke,./blog/Projekty/78b3fd596ca74f3427d3776085a64e25 HTTP/1.1
GET /?admin,usun,notke,./blog/Projekty/78b3fd596ca74f3427d3776085a64e25,tak HTTP/1.1
GET / HTTP/1.1" 200 20627 "http://www.quex.panic.pl/?admin,usun,notke,./blog/Projekty/78b3fd596ca74f3427d3776085a64e25,tak
GET /?admin,edytuj,notke,./blog/Projekty/399707793cced5741dae28e968896f88 HTTP/1.1
GET /?admin,edytuj,notke,./blog/zycie/2f8f8cb7116bec950f48046be98f3284 HTTP/1.1
POST /?admin,edytuj,notke,zycie,2f8f8cb7116bec950f48046be98f3284 HTTP/1.1


To prawda, tak właśnie edytuję i usuwam notki ^^. Zmianie uległa właśnie notka do której dosał się POSTem. Jest tylko jedno ale - w pliku admin php mam coś takiego:
  1. <?php
  2. // Sprawdzanie, czy użytkownik jest zalogowany:
  3. if($_SESSION['zalogowany'] == true)
  4. {
  5.  // Wyświetlenie części administracyjnej.
  6.  (...)
  7.  }
  8.  else 
  9.  {
  10.  // Wyświetlenie formularza do zalogowania.
  11.  (...)
  12.  }
  13. ?>


$_SESSION['zalogowany'] ustawione jest na true, jeżeli do formularza z logowaniem wpisze się taki login i hasło jakie jest w pliku config.php.

Czyli wysyłając żądanie musiał mieć ustawioną wartość $_SESSION['zalogowany'] na true, jak to zrobił i skąd akurat wiedział że taka zmienna a nie np. $_SESSION['auth']? Albo też źle myślę i zrobił to w inny sposób.

A może sprawdzenie jednej zmiennej sesji to za mało? Co doradzacie? Jak Wy rozwiązujecie logowanie i zabezpieczenia?

Proszę o pomoc, nie chce aby ten problem pojawił się następnym razem.