Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy addslashes i htmlspecialchars wystarczy?
Utilaft
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 19.01.2013

Ostrzeżenie: (10%)
X----


Witam. Get filtruje mysql escape string, a formularze addslashes i htmlspecialchars

Czy to wystarczy? i czy to jest dobre rozwiązanie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





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.

  1. // parametr status powinien mieć wartości 0 lub 1
  2.  
  3. if(!in_array($_GET['status'], array(0,1)) {
  4. die('Niepoprawna wartość statusu!');
  5. }
  6.  
  7. // ...


- Podobnie jeśli parametr jest numeryczny i powinien należeć do jakiegoś dużego zakresu to sprawdzaj go w taki sposób:

  1. // parametr wiek powinien mieć wartości od 18 do 99
  2.  
  3. if(!is_numeric($_GET['wiek'] || $wiek < 18 || $wiek > 99) {
  4. die('Niepoprawna wartość parametru wiek');
  5. }
  6.  
  7. // ...


- 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.
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: 13.10.2025 - 09:17