![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 6 Dołączył: 25.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował wpaski 30.10.2017, 13:31:48 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
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 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
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. -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 6 Dołączył: 25.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
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/ |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Tak, Laravel ma w standardzie w Eloqent whitelist (zalecany, choć wymaga więcej czasu) i blacklist nazw zmiennych, które lecą do insert/update.
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.06.2025 - 06:56 |