Wykaz postów użytkownika - phm - które otrzymały punkt za pomoc
phm | |
|
Przyznam, że nie do końca rozumiem ideę Twojego kodu. Użytkownik wprowadza link do formularza, Ty go pobierasz i "obrabiasz" w tagi object, itd, odpowiedzialne za prawidłowe wyświetlenie filmu? Pytasz, czy to bezpieczne. W Twoim skrypcie nie widzę niczego, co sprawdzałoby poprawność wprowadzonych danych. Stosujesz stripshlashes(), które odpowiada jedynie za zabawę slashami (znaczkami typu / ) i które stosuje się, gdy flaga magic_quotes_gpc jest ustawiona (on). Otrzymane linki przechowujesz najprawdopodobniej w bazie danych (zgaduję, bo z kodu to też nie wynika). Do zabaw z wysyłanymi do bazy danych ciągów znaków, polecam mysql_real_escape_string (w manualu przeczytasz sobie zalety tej funkcji). Chodzi o to że np. gdy ktoś zamiast kodu filmu wpisze </td></td></td></td> to rozjedzie mi się cała strona i tp. Tutaj sam odpowiedziałeś sobie na pytanie odnośnie bezpieczeństwa. Nie filtrujesz danych całkowicie poprawnie. Twój skrypt podatny jest na XSS oraz HTML Injection (i w zależności od konfiguracji serwera można podpiąć jeszcze SSI Inj. ). Już tłumaczę jak to działa. Ktoś, zamiast linku filmu przesyła Ci złośliwy kod JavaScript, bądź nawet prostą ramkę prowadzącą do zawirusowanej strony. Ty, niczego nieświadomy sprawdzasz nadesłane linki. Przeglądarka trafia na złośliwy kod i wykonuje go (taka już jej robota). Jak zaradzić Twojemu problemowi? Są dwa rozwiazania (i najlepiej zastosować oba): 1. pobawić się funkcjami takimi jak htmlspecialchars(), czy strip_tags() go usunięcia wszystkich tagów HTML z wprowadzanego ciagu 2. zaraz po otrzymaniu ciągu znaków, mającego być linkiem do filmu, sprawdzić za pomocą wyrażeń regularnych, czy string jest rzeczywiście linkiem (budowę linka każdy zna) |
phm | |
|
Powiem w skrócie tak: Cokolwiek wysyłasz do bazy danych - musi być sprawdzone pod względem możliwości wstrzyknięcia kodu SQL (SQL Injection). Cokolwiek wyświetlasz na stronie w postaci kodu, musi być sprawdzone pod względem tagów (XSS i HTML Injection). |