Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wzorcowy skrypt wysyłania/edycji formularza
miquel
post
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
Go to the top of the page
+Quote Post
Turson
post
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
Go to the top of the page
+Quote Post
SaMi
post
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
Go to the top of the page
+Quote Post
miquel
post
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.10.2012

Ostrzeżenie: (0%)
-----


Cytat(SaMi @ 22.07.2013, 12:23:31 ) *
Pytam z czystej ciekawości dlaczego nie chcesz stosować PDO ?


Stosuję PDO, jednak chciałbym zobaczyć kompletne rozwiązanie w czystym PHP dotyczące m.in. zabezpieczenia przez SQL Injection czy innych.
Go to the top of the page
+Quote Post
nospor
post
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

Go to the top of the page
+Quote Post
miquel
post
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.10.2012

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 23.07.2013, 12:00:28 ) *
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
Go to the top of the page
+Quote Post
sowiq
post
Post #7





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(miquel @ 24.07.2013, 10:51:37 ) *
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
Go to the top of the page
+Quote Post
Crozin
post
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"? wink.gif A skrót od "według" to "wg" - bez kropki, jak w przypadku każdego skrótu, który zawiera ostatnią literę wyrazu.
@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.
Go to the top of the page
+Quote Post
nospor
post
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..... wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miquel
post
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.10.2012

Ostrzeżenie: (0%)
-----


Cytat(sowiq @ 24.07.2013, 11:25:28 ) *
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ć.
Go to the top of the page
+Quote Post
viking
post
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.


--------------------
Go to the top of the page
+Quote Post
sowiq
post
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
Go to the top of the page
+Quote Post
miquel
post
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.10.2012

Ostrzeżenie: (0%)
-----


Cytat(viking @ 25.07.2013, 09:16:42 ) *
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.

Cytat(sowiq @ 25.07.2013, 09:17:41 ) *
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?
Go to the top of the page
+Quote Post
sowiq
post
Post #14





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(miquel @ 25.07.2013, 10:39:16 ) *
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".
Go to the top of the page
+Quote Post
miquel
post
Post #15





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 1.10.2012

Ostrzeżenie: (0%)
-----


Cytat(sowiq @ 25.07.2013, 12:46:48 ) *
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
Go to the top of the page
+Quote Post
fate
post
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


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:10