Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> traktowanie liczb jako łancuchów podczas używnaia bazy danych ?
jolam
post 21.10.2009, 11:49:23
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
thek
post 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
Go to the top of the page
+Quote Post
jolam
post 21.10.2009, 15:11:51
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 12.07.2009

Ostrzeżenie: (10%)
X----


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
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 Wersja Lo-Fi Aktualny czas: 27.04.2024 - 10:33