traktowanie liczb jako łancuchów podczas używnaia bazy danych ? |
traktowanie liczb jako łancuchów podczas używnaia bazy danych ? |
21.10.2009, 11:49:23
Post
#1
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) |
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 |
|
|
21.10.2009, 13:13:53
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
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.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
21.10.2009, 15:11:51
Post
#3
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 0 Dołączył: 12.07.2009 Ostrzeżenie: (10%) |
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 |
|
|
Wersja Lo-Fi | Aktualny czas: 17.06.2024 - 06:18 |