Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wstrzykniecie JavaScriptu - jak temu zapobiec?
collecter
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 22.10.2010

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


Witam,

od pewnego czasu ucze sie obiektowego php, tworzac wlasna strone internetowa. Jakie bylo moje zdziwienie gdy dzisiaj przestala ona poprawnie funkcjonowac. Strona odswieza sie sama co sekunde, co uniemozliwa jej poprawne funkcjonowanie. Po zweryfikowaniu kodu zrodlowego stronu zobaczylem nastepujacy kod:

<script type="text/javascript">
window.setTimeout("window.location.replace(ADRES_STRONY');",1);
</script>

Slyszalem o atakach XSS, ale nigdy ze tak powiem nie doswiadczylem tego na wlasnej skorze:) Z tego powodu chcialbym sie zapytac bardziej doswiadczonych kolegow jak temu zapobiec?

pozdrawiam
d
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cudny
post
Post #2





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(lukaskolista @ 5.11.2011, 09:35:30 ) *
Cudny, jestes hardcorem! Zapytan do bazy sie tak nie zabezpiecza (w przypadku MySQL jest to funkcja mysql_real_escape_string). Co do tekstu wyswietlanego na stronie - stary ale jary BBCode, wedlug mnie trzeba odroznic "HTML" wstawiany przez uzytkownikow od tego natywnego z aplikacji.



Zatem jestem harcorem (IMG:style_emoticons/default/biggrin.gif)
Czy kolega przeczytał najpierw jak działa funkcja addslashes(); (IMG:style_emoticons/default/biggrin.gif) ?
W przypadku kodowania utf8 jest ona bezpieczna dla sql injection bo nie jesteś w stanie dodać w żadnym wypadku pojedynczego znaku ' bądź "
Poniżej artykuł opisujący atak sql injection pomimo użycia addslashes:
http://shiflett.org/blog/2006/jan/addslash...l-escape-string
Proszę jednak zapoznać się z dopiskiem na końcu strony:
Cytat
This type of attack is possible with any character encoding where there is a valid multi-byte character that ends in 0x5c, because addslashes() can be tricked into creating a valid multi-byte character instead of escaping the single quote that follows. UTF-8 does not fit this description.

Wnioski:
Jak mądrze rozwiążesz aplikację to i validacja będzie łatwiejsza.
Oczywiście sam używam mysql_real_escape_string(); ale powyższy przykład udowadnia, że piszesz o czymś o czym nigdy nie czytałeś.
Warto zapoznać się z funkcjami predefiniowanymi w php

A tu ciekawostka dotycząca bezpieczeństwa mysql_real_escape_string(); przy użyciu kodowania ISO-8859-1
http://ilia.ws/archives/103-mysql_r...Statements.html

Nie ma super bezpiecznej validacji danych. Można jedynie zabezpieczyć dane bardzo dobrze, ale i tak znajdzie się na to sposób. SHA1 też zostało złamane i szybki komputer jest w stanie w (tu nie pamiętam dokładnego czasu, nie chce mi się szukać) tydzień czy dwa odczytać hasło wykradzione z bazy danych.
Niestety często się to zdarza przy backupach, wiec... jak piszą, "było włamanie do servisu, wykradziono hasła, ale nie martwcie się, były hashowane", to i tak zmień sobie to hasło. To taka ciekawostka sytuacyjna (IMG:style_emoticons/default/biggrin.gif)

Co do BBCode, nie widzę najmniejszego sensu używania go w aplikacjach, chyba że jest to forum.
Czemu ? A z racji wydajności.
Lepiej zapisać pełny html do pliku i potem require_once($file); niż przy użyciu wyrażeń regularnych parsować cały kod i zamieniać znaczniki.
Moim zdaniem lepiej mądrze rozwiązać widoki aplikacji niż używać BBCode.
Oczywiście możliwość tworzenia HTML w tym wypadku może mieć tylko i wyłącznie admin, czyli osoba odpowiedzialna za poprawne działanie całej aplikacji.
Możliwość tylko i wyłącznie po autoryzacji.
Jak zwalisz validacje logowania to i tak aplikacja nadaje się do kosza (IMG:style_emoticons/default/smile.gif)

Ten post edytował cudny 5.11.2011, 11:22:17
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: 3.10.2025 - 11:16