Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Walidacja nazw pól w formularzu
Forum PHP.pl > Forum > Przedszkole
wpaski
Wszędzie przy walidacji (w różnych aplikacjach) widzę, że skupia się ona na "wartościach" formularza ("value")
Natomiast moje pytanie dotyczy "name" np. inputa, czy też należy sprawdzać czy dany formularz ma dokładnie te pola które nas interesują? Czy istnieje jakieś niebezpieczeństwo jeśli to ominiemy? np. są pola w formularzu imie, nazwisko, email i jeśli ktoś ustawił np. dane POST na name="email_swoje_pole" to ... no wlasnie co wtedy, powinien być błąd jak rozumiem
Czy jeszcze coś należałoby sprawdzać przy wysyłce formularza oprócz "value" i "name" ? Czy wystarczy sprawdzać "value" a resztą się nie przejmować? Wiem, że dużo zależy od sposobu zbudowania danej aplikacji/skryptu ale pytam o ogólne stosowane zasady.


Jeśli napisałem nie jasno, to w skrócie chodzi mi o to, czy warto się przejmować sprawdzaniem czy ktoś nie zmienił lub nie dodał klucza w tablicy $_POST.
Pozdrawiam.
markonix
O ile nie ładujesz tego bezpośrednio do bazy albo robisz to wcześniej filtrując to nie ma zagrożenia.
https://en.wikipedia.org/wiki/Mass-assignment_protection
trueblue
Jeśli ktoś zmieni nazwę pola na nieistniejące, to oryginalnego po prostu nie dostaniesz, więc walidacja nie przepuści takich danych.
Jeśli ktoś zamieni nazwy pól o znacząco różnych walidatorach, to też ich nie przepuści.
A jeśli ktoś zamieni nazwy pól delikatnie się różniące, np. imię i miejscowość, to równie dobrze użytkownik może wpisać w te pola zamienne wartości i efekt będzie taki sam - czego nie unikniesz.
wpaski
Czyli jak dobrze rozumiem nie ma się o co martwić ale, tylko w przypadku jeśli oczekuję danych z konkretnych pól natomiast problem pojawia się gdy zakładam, że wszystkie pola które podsyła użytkownik w formularzu są dokładnie takie jak oczekuję, podsumowując, trzeba ustalać pola w poleceniu SQL UPDATE i jednak dla bezpieczeństwa ustalić, że dla danego formularza obowiązuje zestaw danych pól?

z tego co znalazłem jest to poruszone w laravelu
https://stackoverflow.com/a/22279580
i też tutaj
po czesku ale z kodu w miarę wiadomo o co chodzi:
https://devblog.cz/2012/03/mass-assignment-v-php/
markonix
Tak, Laravel ma w standardzie w Eloqent whitelist (zalecany, choć wymaga więcej czasu) i blacklist nazw zmiennych, które lecą do insert/update.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.