![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Cześć !
Temat logowania oraz sql injection przerobiłem z Wami w poprzednim temacie wszystko pięknie. Natomiast czytając temat w dziale PHP "SQL Injection/Insertion" nie mogę lub w gąszczu kłótni nie znalazłem jasnej odpowiedzi. Mam taki kod, mniej więcej struktura strony opiera się na tym ( ucięte to co zbędę zostawiłem tylko to co jest chyba potrzebne ), dodałem do tego mysql_real żeby filtrowało mi id
I moje pytanie po wpisaniu: www.domena.pl/index.php?id=1' wywala mi błąd:
Więc czy dobrze mi się wydaje strona nadal jest podana na sql injection ? Bo błąd chyba nie powinien się pojawiać, a czy mam mysql_real czy nie to błąd ciągle ten sam. Filtrowanie zrobiłem podobne do tego z tematu logowania i tam działa poprawnie, magic_quotes_gpc mam na off Uprzedzę już pewne odpowiedzi: wiem, że PDO będzie lepsze jednak chciałbym przeronić mysql'a Ten post edytował Mega_88 28.03.2013, 00:36:25 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 25 Dołączył: 29.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
zamień to:
na -------------------- Pomogłem daj pomógł
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak na szybko zamieniłem, ale komunikat błedu mam nadal ten sam...
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 25 Dołączył: 29.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
spróbój zmienic na takie coś
Ten post edytował Ruch Radzionków 28.03.2013, 00:57:51 -------------------- Pomogłem daj pomógł
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dobra z pomocą i chwilę pokombinowałem obecnie wygląda to tak:
Po wpisaniu w URL - www.domena.pl/index.php?id=1' nie wyświetla się żaden błąd i strona działa prawidło, czy to znaczy że obecnie zwykły "Kowalski" nie będzie mógł w łatwy sposób kombinować ? Oraz mam jeszcze jedno pytanie. Rozumiem, że teraz konieczne będzie zmienie w funkcjach z $id na '$id' w poleceniach SELECT jak na przykład ta poniżej ?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 311 Pomógł: 25 Dołączył: 29.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
tak bo musisz miec wybrane co tam sie ma znajdowac bo to może byc nawet napis i tak bedziesz to musiał dac w nawias
-------------------- Pomogłem daj pomógł
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
tak bo musisz miec wybrane co tam sie ma znajdowac bo to może byc nawet napis i tak bedziesz to musiał dac w nawias Czyli powinno być w ten sposób ?
A jak z odpowiedzią na moje pytanie: "Po wpisaniu w URL - www.domena.pl/index.php?id=1' nie wyświetla się żaden błąd i strona działa prawidło, czy to znaczy że obecnie zwykły "Kowalski" nie będzie mógł w łatwy sposób kombinować ?" A jeszcze mi się coś przypomniało czy jeżeli na sztywno określam z jakiego id pobieram czyli coś w tym stylu i służy mi to tylko do wyświetlenia tytułu z id=1:
To też powinien robić to "WHERE id='1'" ? Ten post edytował Mega_88 28.03.2013, 01:17:11 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat To też powinien robić to "WHERE id='1'" ? NIe, nie powinieneś.... mysql za pomocą telepati połączy się z Twoim mózgiem i już samo będzie wiedziało że chcesz pobrać tylko rekordy z id=1....
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
NIe, nie powinieneś.... mysql za pomocą telepati połączy się z Twoim mózgiem i już samo będzie wiedziało że chcesz pobrać tylko rekordy z id=1.... nospor wydaje mi się, że nie przeczytałeś całego tematu... Nie pytam o to jak pobrać rekord o id=1 tylko czy jeżeli już stosuję ten rodzaj zabezpieczenia "$id = mysql_real_escape_string($_GET['id']);" To czy jak w id przekazuję stałą wartość, w przykładzie id=1 to mam to zrobić: Tak id = '1' czy zostawić tak jak jest czyli id=1 żeby w jakimś stopniu zabezpieczyć się przed sql injection przez URL. Wydaje mi się, że nie muszę stałej wartości dawać w '1' bo nie otrzymuję jej od użytkownika. Oczekuje odpowiedzi: lepiej będzie jak dasz w '' lub nie nie musisz. p.s - wypowiedzi nie skomentuję. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Opakowanie w '1' dało by ci tylko tyle że int byłby potraktowany jako string i baza rzucila by bledem.
Jesli stala wartosc nie musisz, wszystko co od uzytkownika juz tak. Rozszerzenie mysql jes wycofywane z php. Ten post edytował viking 28.03.2013, 09:30:48 -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat nospor wydaje mi się, że nie przeczytałeś całego tematu... Zgadza się. Nie przeczytałem. Przepraszam.Wracając do tematu: wartosci liczbowych w ogóle się nie pakuje w żadne apostrofy, niezależnie czy idą od usera czy od ty to sobie sam z palca wpiszesz. Wartosci liczbowe to liczby a nie teksty. Tylko teksty bierze się w apostrofy. Kolejna sprawa to to, że wartosci liczbowych nie przepuszcza się przez żadne mysql_escape_string, tylko rzutuje na liczbę: $id = (int)$_GET['id']; I tę wartosc można już spokojnie wkładać do zapytania. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Viking dziękuje za odpowiedź. Tak wiem, że już dawno czas na pdo, natomiast obecnie nie mam czasu, żeby się przesiąść i przerobić już gotową stronę.
Zgadza się. Nie przeczytałem. Przepraszam. Wracając do tematu: wartosci liczbowych w ogóle się nie pakuje w żadne apostrofy, niezależnie czy idą od usera czy od ty to sobie sam z palca wpiszesz. Wartosci liczbowe to liczby a nie teksty. Tylko teksty bierze się w apostrofy. Kolejna sprawa to to, że wartosci liczbowych nie przepuszcza się przez żadne mysql_escape_string, tylko rzutuje na liczbę: $id = (int)$_GET['id']; I tę wartosc można już spokojnie wkładać do zapytania. Czyli jak dobrze zrozumiałem porponujesz, żeby zrobić to w ten sposób ?
Czyli zamiast:
I wtedy mogę być w miarę spokojny o sql injection w URL typu www.domena.pl/index.php?id=1' ? Zaraz sobię to sprawdzę, ale jak Ty mi to jeszcze potwierdzisz to będę o wiele spokojniejszy ![]() Ten post edytował Mega_88 28.03.2013, 09:49:46 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tak, dokładnie to proponuje
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak, dokładnie to proponuje ![]() Sprawdziłem i chyba spełnia swoje zadanie przynajmniej już nie dostaję żadnych błedów po wpisaniu: www.domena.pl/index.php?id=1' Dla potomnych może komuś się przyda:
A ostatnio spotkałem się z czymś takim
Czy takie zabezpieczenie jak zaproponowane przez nospor pozwoli się przed takimi zabiegami ochronić ? Czy to już wyższa półka i w jakiś inny sposób trzeba się bronić korzystając z mysql ? Ten post edytował Mega_88 28.03.2013, 10:11:06 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tak, to co napisałem zabezpiecza i przed czymś takim. Jakby tak nie było, to bym jak głupek tego ci nie pisał
![]() (int) rzutuje daną rzecz na liczbę. Niewazne czym jest dana rzecz - po rzutowaniu zawsze będzie liczbą. Tu nie ma żadnego hacka - liczba to liczba -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak, to co napisałem zabezpiecza i przed czymś takim. Jakby tak nie było, to bym jak głupek tego ci nie pisał ![]() (int) rzutuje daną rzecz na liczbę. Niewazne czym jest dana rzecz - po rzutowaniu zawsze będzie liczbą. Tu nie ma żadnego hacka - liczba to liczba Dziękuje właśnie o to mi chodziło. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:05 |