![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (10%) ![]() ![]() |
Witam. Get filtruje mysql escape string, a formularze addslashes i htmlspecialchars
Czy to wystarczy? i czy to jest dobre rozwiązanie? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 59 Dołączył: 16.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
dobrze użyć regexów i preg_match
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Jeśli dokładnie wiesz co ma się znajdować w otrzymanych danych ( float, int, długość znaków, itp ) to przefiltruj to pod tym kontem.
mysql real escape string wystarczy - ale co ma znaczenie czy dajesz to na _GET czy _POST ? Na wszystko dawaj mysql real escape string ! Do tego nie wiem czy htmlspecialchars() jest Ci do czegoś potrzebne, jeśli nie wyświetlasz tego potem na stronie - no chyba, że chcesz wyświetlić, ale to bardziej pomyślał bym o przefiltrowaniu tego przez DOM'a, ewentualnie dał strip_tags() Validacja to podstawa -------------------- ..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Popieram przedmówców ale należy odróżnić dwie rzeczy - walidację od filtrowania. Ogólnie zasady walidacji są takie:
- Jeśli parametr ma mieć określoną wartość lub jedną z tablicy wartości to sprawdzaj dla niego poprzez == i in_array czy tak właśnie jest. Nie ma sensu dodawać tu inne walidacje.
- Podobnie jeśli parametr jest numeryczny i powinien należeć do jakiegoś dużego zakresu to sprawdzaj go w taki sposób:
- Ogólne dane liczbowe sprawdzaj poprzez odpowiednie funkcje typu is_int, is_float itp. - Takie dane jak na przykład daty musisz odpowiednio walidować wykorzystując do tego na przykład obiekt klasę DateTime z odpowiednim formatowaniem - będzie krzyczała jak data jest niepoprawna - Ciągi znaków różnego rodzaju powinny być sprawdzane pod kątem ataków XSS (wstrzyknięty kod HTML tam gdzie go być nie powinno itp), możesz tu użyć różnych metod, wyrażeń regularnych by sprawdzić czy ciąg zawiera wyłącznie dozwolone znaki, sprawdzać długość itd. Dodatkowo możesz dla konkretnych ciągów (adres e-mail, adres http itp) używać PHPowego filter_var. Filtrowanie z kolei to zabieg mający na celu zabezpieczyć dane przed wrzuceniem do bazy danych. W tym celu stosuje się addslashes (przestarzale), mysql_real_escape_string i podobne - wszystkie mają na celu to aby zabezpieczyć bazę. Jeśli przykładowo w danym parametrze mogą występowac prawie dowolne znaki, html, cudzysłowy itd to przymusem jest je filtrować. Strip_tags czyści z ciągu tagi html (usuwa je) - jest to przydatne na ataki XSS. -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 1.07.2025 - 14:32 |