Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 29.09.2013 Ostrzeżenie: (0%)
|
Czy taka kombinacja zmiennej jest poprawna i zostanie zinterpretowana przez serwer poprawnie? Głównie chodzi o ochronę przed SQLInjection.
Czy może powinno to wyglądać tak?
Albo jeszcze inaczej wymyśliłem:
Czy to jest poprawne? Ten post edytował w0jt3k 30.09.2013, 20:43:45 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%)
|
Nie, to nie jest poprawne. addslashes nie uchroni Cię przed SQL Injection. Rzutowanie stringa na string nie ma najmniejszego sensu.
Najlepiej zapoznaj się z wbudowaną biblioteką PDO, która pozwala na eleganckie budowanie bezpiecznych zapytań. Od biedy możesz używać np. mysql_real_escape_string, ale z całego serca polecam PDO. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 29.09.2013 Ostrzeżenie: (0%)
|
Ta funkcja wystarczy? + rzutowanie int.
Ten post edytował w0jt3k 3.10.2013, 15:25:39 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%)
|
Używaj PDO zamiast się takimi przyziemnymi rzeczami przejmować. Samo (int) wystarczy. Nie trzeba dodawać już addslashes.
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 29.09.2013 Ostrzeżenie: (0%)
|
No, dobrze.Używam już PDO. Ale czy używając tej biblioteki, nie muszę już używać rzutowania typów, addslashe, escape string i tak dalej? Bo PDO zabezpieczy mniez gwarancją?
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%)
|
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 29.09.2013 Ostrzeżenie: (0%)
|
Zrezygnowałem z PDO, bo mnie dosłownie wkur... to, ze nie ma zaimplementowanych wielu funkcji z Mysqli.
Czy taki kod jest dobrze zabezpieczony? Niby kolega wyżej mówił, że addslashes nie potrzeba, przy int, no, ale... na wszelki wypadek:
Nie czepiać się kodowania md5/sha przy haśle (IMG:style_emoticons/default/tongue.gif) To dla testu kod. (IMG:style_emoticons/default/smile.gif) I jeszcze jedno pytanie. Jak zabezpieczyć pusty VALUE id_uz w:
Wiersz w bazie w tym miejscu mam unsigned auto increment primary key int wiec wiecie dlaczego puste. Ten post edytował w0jt3k 16.10.2013, 15:36:31 |
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat Zrezygnowałem z PDO, bo mnie dosłownie wkur... to, ze nie ma zaimplementowanych wielu funkcji z Mysqli. Sam sobie robisz krzywde, tylko dlatego ze przywykles do dwoch czy trzech funkcji, ktorych odpowiednikow nie potrafisz znalezc....Cytat Niby kolega wyżej mówił, że addslashes nie potrzeba, przy int, no, ale... na wszelki wypadek: A do szkoly/pracy tez chodzisz z pontonem na wszelki wypadek powodzi? (IMG:style_emoticons/default/wink.gif) Int to int, wystarczy ze zrobisz: $zm = (int)$zm; i juz. Z twojego kodu wynika, ze haslo i email to inty? Ktos z nas czegos tu nie rozumie (IMG:style_emoticons/default/wink.gif) Z twojego kodu wynika rowniez, ze dane zaczynasz zabezpieczac juz dawno po tym jak wykonales zapytanie, ktore korzysta z tych danych.... Nie sadzisz ze to odrobine za pozno? Cytat I jeszcze jedno pytanie. Jak zabezpieczyć pusty VALUE id_uz A co ty tu chcesz zabezpieczac? Przeciez to ty wkladasz te wartosc. Jak bedziesz sam w kodzie wstawial wartosc 2, to tez bedziesz chcial ja zabezpieczac? Znowu na wszelki wypadek? (IMG:style_emoticons/default/wink.gif) Poza tym dobrą praktyką jest wstawianie NULL a nie '' No i czemu po real_escape_string robisz znowu addslashes?? Przeciez podwojnie zaczynasz slashowac wszystko..... Naprawde, im wiecej, nieznaczy lepiej... W tym wypadku znaczy gorzej. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 29.09.2013 Ostrzeżenie: (0%)
|
No, nie rozumiem. I prosiłbym o szersze wyjaśnienia. Swoją drogą bardzo sięuśmiałem, czytając Twoją opinię (IMG:style_emoticons/default/biggrin.gif) Dzięki za mniej więcej uświadomienie mi błędu.
Mógłby ktoś wyjaśnić mi, jak się więc zabezpieczyć dokładnie? Dam real escape i addcslashes %_ bo real escape nie escapuje %_ i inta przed, tak? Pozdrawiam, jestem nowy w php. A i nie mogę znaleźć żadnej książki na temat obrony przed SQL injection, ani po rosyjsku, angielsku, niemeicku, no i polsku... W manualu niby cos tam mam o XSS i inject. o escapach i intach i addcslashach i htmlentitles czy tej drugiej funkcji, no ale i tak nikt tego do kupy nie pozbierał i nie wyjaśnił na konkretnych przykładach. |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%)
|
Nie trzeba zakładać 50 kondomów, jeden wystarczy.
zostanie zawsze na liczbę zamieniony, co by w tym nie było. Jaśniej chyba nie można? Nie trzeba (do liczb) więcej "zabezpieczeń" jak to nazwałeś. Do zmiennych zawierających tekst użyj tylko htmlspecialchars, więcej też Ci nie potrzeba. Powinieneś PDO używać, nie potrafisz i twierdzisz, że Cię denerwuje. Jakich funkcji Ci brakuje? |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 29.09.2013 Ostrzeżenie: (0%)
|
Np. num_rows.
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%)
|
|
|
|
|
Post
#13
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Cytat No, nie rozumiem. I prosiłbym o szersze wyjaśnienia. Swoją drogą bardzo sięuśmiałem, czytając Twoją opinię Dzięki za mniej więcej uświadomienie mi błędu. Mógłby ktoś wyjaśnić mi, jak się więc zabezpieczyć dokładnie? Dam real escape i addcslashes %_ bo real escape nie escapuje %_ i inta przed, tak? To moze napisz dokladnie czego nie zrozumiales z mojego posta, bo nie wierze ze nic. A jesli naprawde nie zrozumiales nic, to poprostu sie w ogole nie starales by zrozumiec.... Przeciez napisalem wyraznie ja, oraz wczesniej przedemna inni, ze liczb nie trzeba escapowac tylko rzutowac na int i juz. TU nie ma co wyjasniac ani robic nic wiecej "na wszelki wypadek". Liczba to liczba, ona nie ma nic do escapowania po zrzutowaniu na INT. Napisalem ci rowniez, ze zabezpieczasz dane po tym, jak juz z nich skorzystales..... To tak jakbys slodzil herbate juz po tym, jak ją wypiles... Durne, nieprawdaz? Jak chesz miec slodką herbate to ją sie slodzi przed wypiciem a nie po. Identycznie z danymi do zapytania: je sie zabezpiecza przed wykonaniem zapytania a nie po. Naprawde tego nie rozumiesz i to też wymaga dodatkowych wyjasnien? Escapowanie %_? Po co? Dodatkowo oprocz addcslashes robisz addslashes..... Toz ci napisalem, ze robisz to podwojnie, a przez to zle. Ma byc samo real_escape_string. Tu rowniez nie ma co tlumaczyc. num_rows? Uzywam PDO od x lat i pewnie jestem dziwny, ale ani razu nie potrzebowalem num_rows, bo i po co? By sprawdzic czy uzytkownik z danym emailem i haslem istnieje? W tym celu poprostu pobieram rekord przy pomocy FETCH. Jak sie rekord pobierze, znaczy ze user istnieje, jak sie nie pobierze znaczy ze nie istnieje (pomijam przypadek bledu zapytnia by nie mieszac.) |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 23:26 |