ďťż
Podstrony
|
telcocafeGroźnym niebezpieczeństwem dla serwisu są ataki CSRF. Jest kilka sposobów, aby się chronić przed nimi, lecz szukam uniwersalnego sposobu. Jeśli wszystkie akcje typu: dodaj, usuń, edytuj, głosuj, kupuj... są wywoływane metodą POST, część problemów jest rozwiązana, np. z obrazkiem na forum prowadzącym do: kuptowar.php?id=123 - ale to nie wszystko. Atakujący może przygotować złośliwą stronę, na której nieświadomie kupimy towar lub usuniemy komentarz.REFERER Sprawdzanie strony odsyłającej częściowo zabezpiecza skrypt, lecz niezupełnie. Podobno można zmienić nagłówek za pomocą AJAX lub utworzyć pływającą ramkę (najpierw otworzyć stronę główną serwisu, dodać do niej formularz za pomocą DOM i wysłać). Czy przeglądarki chronią użytkowników przed takimi praktykami? TAJNY IDENTYFIKATOR Przed wykonaniem akcji zapisujemy do sesji tajny identyfikator (token), a potem porównujemy go. Nie jestem pewny, czy takie zabezpieczenie jest dobre w przypadku złośliwej pływającej ramki (j.w.). Aby skutecznie ochronić się przed wykonaniem jakiejkolwiek akcji nieświadomie, musielibyśmy tworzyć token dla każdego <form> / żądania AJAX / itd. Może znacie inne skuteczne metody? Aha, czy jest sens sprawdzać centralnie referer przy każdym żądaniu POST?if($_POST) { if(isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']) ===false) exit; } Użytkownik Ferrari edytował ten post 18 listopad 2008, 00:58 http://code.djangopr...f/middleware.py :) Ja bym proponował tak: 1. JS powodujący ucieczkę strony z ramek (jeśli takie są) 2. HTTP_REFERER 3. Na początku każdego skryptu sprawdzanie jakiejś zmiennej $_SESSION 4. Ciasteczka |
|||
Sitedesign by AltusUmbrae. |