Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: traktowanie liczb jako łancuchów podczas używnaia bazy danych ?
Forum PHP.pl > Forum > Bazy danych > SQLite
jolam
Czy pisanie w komendzie SQL np id = '100' jest dużym błędem? Bez apostrofów sql traktowałby to jako liczbę 100 a teraz jako tekst. Ale jeśli wpisuje to np w warunku WHERE to mimo, że kolumna jest typu liczbowego to wszystko ładnie działa. Nawet INSERT takiego tekstu do kolumny liczbowej działa. Czy to ma jakieś minusy? Bo mi ułatwiło napisanie funkcji dodającej albo wybierającej jakiś wiersz w tabeli. A sprawdzanie is_numeric nie zawsze dobrze mi zadziała bo mam kolumnę z adresami IP i 1.2 to liczba ale już 1.2.3 nie jest liczbą co powodowałoby błędy. Ale nie wiem czy teraz nie popełniam jakiegoś błędu traktując wszystko jako łańcuch.

Pozdrawiam Jola
thek
Błędem to nie jest. Problem może wyniknąć na innej linii -> bezpieczeństwo skryptów. Musisz stosować sprawdzanie tego co dostajesz od usera poprzez wszelkie zmienne typu GET, POST, COOKIE i wszystko co użytkownik może wykorzystać do przemycenia informacji do systemu. Wstawione w newralgicznych miejscach bez sprawdzenia mogą w skrajnych przypadkach skasować bazę lub stworzyć użytkownika o ogromnych uprawnieniach, posiadającego dostęp do zastrzeżonych miejsc lub danych. A tego należy unikać. To dlatego stosuje się szeroko pojmowaną walidację (w której skład może wchodzić funkcja typu is_numeric). To nie jest fanaberia ale wymóg bezpieczeństwa. Nie zabezpieczanie się przed tym może w przyszłości mieć tragiczne skutki. Stąd htmlspecialchars, mysql_real_escape_string itp. są w użyciu powszechnym. Poza tym drobna literówka potrafiłaby sprawić, że przesłana dana utworzyła by nieprawidłowe zapytanie, którego baza danych nie mogła by przetworzyć i zwracała by błąd, uniemożliwiając dalsze przetwarzanie w skrypcie.
jolam
No ale jak mam sprawdzić czy wartość dla kolumny adresip jest liczbą czy tekstem i od tego uzależniać apostrofy? Jak odróżnić 1.2 tekstowe od liczbowego? A w dodatku używam funkcji prepare w PDO, ona chyba zabezpiecza przed tymi wszystkimi złymi rzeczami o których napisałeś?

Pozdrawiam serdecznie Jola
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-2024 Invision Power Services, Inc.