lukasz_matysek
19.05.2010, 17:40:45
Tak jak w temacie, potrzebuję potwierdzenia że idę w dobrym kierunku.
Na bazie kilkunastu przeczytanych postów i artykułów zbudowałem funkcję walidującą stringi przed podaniem ich do zapytania. Proszę o jej sprawdzenie. Czekam na surową i konstruktywną krytykę ze wskazaniem ewentualnych błędów w rozumowaniu:)
function preparePostTable()
{
foreach ($_POST AS $klucz => $v)
{
$_POST[$klucz]=$v;
}
}
croc
19.05.2010, 17:47:20
Dzisiaj to już komuś pisałem - nie wrzucaj danych do bazy z htmlspecialchars. Po drugie ta funkcja moim zdaniem nie jest ldobra, bo ingeruje sama w całą tablicę $_POST. Nie lepiej podawać jej każdą zmienną jawnie, osobno i używać jej dopiero w zapytaniu?
lukasz_matysek
19.05.2010, 17:58:02
Co do specialchars to się zgodzę, jednak wyjaśnij mi, dlaczego działanie na całej tablicy POST nie jest dobre? z punktu widzenia kodu, lepiej jest dać raz preparePostTable() i potem normalnie zczytywać sobie z posta już przetworzone wartości. Przynajmniej tak ja to widzę
croc
19.05.2010, 18:02:31
Na pewno wygodniej i bezpieczniej o tyle, że nie zapomnisz o żadnej wartości. Jednak tracisz całą kontrolę. Inaczej obsłużyłbym np. dane liczbowe (intval( )) czy zmiennoprzecinkowe (floatval( )). Istnieje też niebezpieczeństwo, że z jakiegoś powodu funkcja zostanie wywołana dwa razy. Twoja funkcja to tzw. funkcja działająca w miejscu, przeważnie ich używanie nie jest dobrym rozwiązaniem.
lukasz_matysek
19.05.2010, 18:06:37
Rozumiem. Zatem czekają mnie lekkie przeróbki. Dzięki za pomoc.
bełdzio
20.05.2010, 02:06:10
dodaje jeszcze ochronę przed ldap injection, xpatch injection etc :| dane filtruje się zgodnie z ich przeznaczeniem, a nie wszystkimi możliwymi funkcjami po co mysql_re... jeśli zmienna nie będzie leciała do bazy tylko na stronę?
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.