Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wzorcowy skrypt wysyłania/edycji formularza
Forum PHP.pl > Forum > Przedszkole
miquel
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?
Turson
-sprawdzenie czy formularz zawiera zabronione znaki np. "/, *, $, <, >"
-sprawdzenie czy formularz zawiera białe znaki
SaMi
Pytam z czystej ciekawości dlaczego nie chcesz stosować PDO ?
miquel
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.
nospor
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
miquel
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
sowiq
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
Crozin
@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.
nospor
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
miquel
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ć.
viking
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.
sowiq
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.
miquel
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?
sowiq
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".
miquel
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.
fate
napisze że chcesz gotowca w dziale zlecenia a nie modzisz
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.