![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 1.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
szukam przykładu jak wzorcowo powinien być odbierany HTMLowy formularz przy pomocy czystego PHP (bez użycia frameworków czy dodatkowych bibliotek) i zapisywany do bazy. Przykładów jest baardzo dużo w sieci (np. na GitHUBie), ale szukam czegoś wzorcowego, zawierającego "best practices" na przykład zabezpieczenie przed XSS czy SQL injection czy walidację danych zarówno po stronie przeglądarki jak i po stronie serwera. Niech to będzie formularz HTML-owy zawierający wszytskie możliwe typy pól formularza, formularz będzie wysyłany POSTem (po przejściu walidacji po stronie przeglądarki). Dane odbiera skrypt PHP, przeprowadza ponowną walidację już po stronie serwera, zapisuje do bazy danych (np. MySQL) i na koniec wyświetla te dane w tabeli, które zostały zapisane. Oczywiście przy zapisywaniu do bazy (bez użycia PDO) powinno być zabezpieczenie przed SQL Injection natomiast przy wyświetlaniu zabezpieczone przed XSS (np. w polu tekstowym mogę wpisać <script> i to są prawidłowe dane, które tak też mają sie wyświetlać). Na koniec oczywiście możliwośc edycji - wczytanie danych z bazy do formularza oraz zapisanie ich. Znacie może taki wzorcowy formularz zawierający najlepsze praktyki programowania w PHP? Ten post edytował miquel 21.07.2013, 15:15:49 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
-sprawdzenie czy formularz zawiera zabronione znaki np. "/, *, $, <, >"
-sprawdzenie czy formularz zawiera białe znaki |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 173 Pomógł: 14 Dołączył: 27.03.2004 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
Pytam z czystej ciekawości dlaczego nie chcesz stosować PDO ?
-------------------- Zapraszam na spływy kajakowe rzekami podlasia www.splywy-kajakiem.pl
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 1.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A czemu wg. Ciebie uzycie PDO to nie "czyste php"? W php by dostac sie do bazy musisz uzywac libow do bazy dostosowanych. Czy to bedzie PDO czy mysql_ to nadal to jest czyste php. Kazdy z tych libow ma wlasne zabezpieczenia przez sqlinjection, z czego PDO jest najlepsze
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 1.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
A czemu wg. Ciebie uzycie PDO to nie "czyste php"? W php by dostac sie do bazy musisz uzywac libow do bazy dostosowanych. Czy to bedzie PDO czy mysql_ to nadal to jest czyste php. Kazdy z tych libow ma wlasne zabezpieczenia przez sqlinjection, z czego PDO jest najlepsze Masz rację, ale chodziło mi o to, jak używając funkcji PHP (a nie bibliotek) uzyskac ten sam efekt |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Masz rację, ale chodziło mi o to, jak używając funkcji PHP (a nie bibliotek) uzyskac ten sam efekt Pozwól mi wygooglować to za Ciebie: https://www.google.pl/search?q=how+to+prote...l+injection+php + drugi wynik wyszukiwania - bardzo dobre wytłumaczenie na StackOverflow: http://stackoverflow.com/questions/60174/h...njection-in-php |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@nospor: Serio... "libów"? Zapomniałeś już o "bibliotekach"?
![]() @miquel: Czyste funkcje PHP, o których myślisz (mysql_*) podobnie jak PDO pochodzą z dodatkowej biblioteki o nazwie mysql (to, że akurat nazwa biblioteki pokrywa się z nazwą bazy danych nie ma znaczenia). Ot, po prostu niektóre biblioteki PHP udostępniają funkcje, niektóre klasy, niektóre zarówno jedno i drugie, a niektóre nie udostępniają niczego. Wracając do tematu... nie istnieje taki wzornik. Ani dla PHP, ani dla innych platform (przykładowo Java czy Python). Nie istnieje, ponieważ to o co pytasz to zagadnienie obejmujące całą rzeszę różnych dziedzin, które mogą być zrealizowane na multum sposobów, zależnych od jeszcze większej ilości zmiennych. Wzornik, może istnieć co najwyżej dla bardzo konkretnego środowiska, np. jakiegoś frameworka. Ale i tutaj osobiście wstrzymałbym się od wyznaczania takiego. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat @nospor: Serio... "libów"? Zapomniałeś już o "bibliotekach"? To ja tu chce zaszpanowac i uzywam skomplikowanego slownictwa a ten mnie miesza z blotem..... ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 1.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Pozwól mi wygooglować to za Ciebie: [/url] ale nie o to mi chodziło, oczywiscie można wygooglować po kolei każdy aspekt związany z wysyłaniem formularza - ale trochę dziwi mnie to, że nie ma tego wszystkiego w jednym miejscu (albo ja nie mogę znaleźć, dlatego pytam) obejmującego wszystkie zagadnienia związanego z tak prostym zagadnieniem jak wysłanie/odbioru i zapisu formularza przy pomocy PHP. Z resztą nie wszytsko da się wygooglać, najpierw trzeba wiedzieć czego się szuka. Na przykład przy uploadowaniu plików na serwer trzeba pamiętać aby nie był to plik wykonywalny. Niby oczywiste ale początkujący użytkownicy mogą o tym nie pamiętać lub nawet nie wiedzieć. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ale czego się spodziewasz? Bibliotek żadnych nie chcesz a żeby to zamknąć w logiczną całość trzeba by zebrać kilka różnych aspektów z wielu dziedzin. PDO nie chcesz a to najważniejszy obecnie element grupujący zagadnienia baz danych. XSS? Może zależeć od systemu szablonów jeśli jest jakiś uzywany. Wymyśliłeś zupełnie abstrakcyjny, niezyciowy problem i szukasz do niego jakiegoś rozwiązania.
-------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No to ja Ci napiszę całość w kilku słowach: nigdy nie ufaj żadnym danym, które przychodzą od użytkownika. Tyczy się to danych formularzy, parametrów URL, uploadowanych plików, ciastek, nagłówków HTTP itd.
Nie ma czegoś takiego jak "wzorcowy skrypt". Ilu programistów, tyle sposobów na rozwiązanie problemu. Są natomiast ogóle zasady bezpieczeństwa dotyczące poszczególnych zagadnień. Interesuje Cię bezpieczeństwo uploadu plików? Wpisz to w google (najlepiej po angielsku) i od razu znajdziesz kilka(dziesiąt) stron wyników. Walidacja danych z formularza? To samo. Ten post edytował sowiq 25.07.2013, 08:18:39 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 1.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ale czego się spodziewasz? Bibliotek żadnych nie chcesz a żeby to zamknąć w logiczną całość trzeba by zebrać kilka różnych aspektów z wielu dziedzin. PDO nie chcesz a to najważniejszy obecnie element grupujący zagadnienia baz danych. XSS? Może zależeć od systemu szablonów jeśli jest jakiś uzywany. Wymyśliłeś zupełnie abstrakcyjny, niezyciowy problem i szukasz do niego jakiegoś rozwiązania. bez przesady, nie jest to jakiś nieżyciowy problem tylko najpopularniejszy problem występujący praktycznie na każdej stronie www wykorzystującej PHP. Oczywiście może być to rozwiązane w różny sposób, przyczepliliście się do wymagania braku PDO - ok, niech to będzie formularz z PDO. W Internecie jest bardzo wiele tutoriali dotyczące forumularzy, ale każdy z nich omawia pewien aspekt, a to walidacji, a to zabezpieczeń itp. a ja szukam czegoś takiego, gdzie te wszystkie informacje są po prostu zebrane w jednym miejscu. No to ja Ci napiszę całość w kilku słowach: nigdy nie ufaj żadnym danym, które przychodzą od użytkownika. Tyczy się to danych formularzy, parametrów URL, uploadowanych plików, ciastek, nagłówków HTTP itd. Nie ma czegoś takiego jak "wzorcowy skrypt". Ilu programistów, tyle sposobów na rozwiązanie problemu. Są natomiast ogóle zasady bezpieczeństwa dotyczące poszczególnych zagadnień. Interesuje Cię bezpieczeństwo uploadu plików? Wpisz to w google (najlepiej po angielsku) i od razu znajdziesz kilka(dziesiąt) stron wyników. Walidacja danych z formularza? To samo. Ok, to co napisałeś to tylko jedna z dobrych praktyk przy wywyłaniu formularza i to tylko dotycząca bezpieczeństwa. Jeste wiele zagadnień związanych z formularzem, nie chodzi mi o wzorcowe czy idealne rozwiązanie ale o przykładowe obejmujące wszystkie aspekty. Wiem, że każdy z tych problemów można wygooglować ale moje pytanie brzmi, czy jest to może zebrane w jednym miejscu? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok, to co napisałeś to tylko jedna z dobrych praktyk przy wywyłaniu formularza i to tylko dotycząca bezpieczeństwa. Jeste wiele zagadnień związanych z formularzem, nie chodzi mi o wzorcowe czy idealne rozwiązanie ale o przykładowe obejmujące wszystkie aspekty. Prościej nam wszystkim będzie dyskutować jeśli napiszesz o co Ci dokładnie chodzi. W pierwszym poście zapytałeś o zapis formularza do bazy. Dostałeś kilka bardzo dobrych odpowiedzi skupiających się na bezpieczeństwie, bo właśnie tak kojarzy się taka kombinacja większości programistów. O co jeszcze pytasz? O zgłaszanie użytkownikowi komunikatu o błędzie walidacji, ustawianiu nagłówków HTTP odpowiedzi, kolor przycisku Submit czy wysokość pól formularza w layoutcie mobilnym? Bo jak dla mnie to wszystkie te rzeczy można podpiąć pod nazwę "wszystkie aspekty związane z formularzem". |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 1.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Prościej nam wszystkim będzie dyskutować jeśli napiszesz o co Ci dokładnie chodzi. W pierwszym poście zapytałeś o zapis formularza do bazy. Dostałeś kilka bardzo dobrych odpowiedzi skupiających się na bezpieczeństwie, bo właśnie tak kojarzy się taka kombinacja większości programistów. O co jeszcze pytasz? O zgłaszanie użytkownikowi komunikatu o błędzie walidacji, ustawianiu nagłówków HTTP odpowiedzi, kolor przycisku Submit czy wysokość pól formularza w layoutcie mobilnym? Bo jak dla mnie to wszystkie te rzeczy można podpiąć pod nazwę "wszystkie aspekty związane z formularzem". tak, chodzi mi także o te wszytskie rzeczy, które wymieniłeś (ja nie pytałem o zapis formularza do bazy tylko o przykład w którym zapis do bazy to jeden z elementów - przeczytaj uważnie), ale nie chodzi mi o same rozwiązanie tych problemów tylko o gotowy przykład który te wszystkie aspekty obejmuje. Albo przynajmniej większość z nich, bo np. wysokość pól formularza w layoutcie mobilnym nie jest tu podstawowym aspektem. Ten post edytował miquel 25.07.2013, 12:13:33 |
|
|
![]() ![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 824 Pomógł: 106 Dołączył: 14.03.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
napisze że chcesz gotowca w dziale zlecenia a nie modzisz
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 06:10 |