Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zabezpieczenie injection zbyt dokładne?
Dopler
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

Ostrzeżenie: (0%)
-----


Mam bazę nazwisk z informacjami. Rekordy wywołuję przez zmienną nazwisko=xxxxx

Jednak żeby się zabezpieczyć przed zhakowaniem całej bazy przez wpisanie nazwisko=a% lub nazwisko=a_
stworzyłem ifa

if(!preg_match("/%/", $nazwisko)&&!preg_match("/_/", $nazwisko))

i działa super - tylko że jest zbyt dokładny - bo są nazwiska takie jak d'Haute (z apostrofem)
i to nazwisko jest wyłapywane jako zhakowanie

jest jakiś sposób żeby zostawić zabezpieczenie ale żeby apostrof nie był brany pod uwagę? I skąd ten apostrof skoro skryptu nie uczulałem na niego?

a może to zabezpieczenie robi się inaczej ?

podgląd bazy jest tu: http://powstanie.okiem.pl

Ten post edytował Dopler 18.06.2012, 18:07:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Dopler
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 30.01.2008

Ostrzeżenie: (0%)
-----


sorry- ale ja po prostu nie rozumiem co znaczy "wywalasz _%" bo przecież to są trzy osobne warunki w bramce logicznej - warunek długości i nie występowania tych znaków


Rozwiązałem problem

  1. if(preg_match("/'/", $lettertwo))
  2. {$sprawdz=4;}
  3. else
  4. {$sprawdz=3;}
  5. if(strlen($lettertwo)==$sprawdz&&!preg_match("/%/", $lettertwo)&&!preg_match("/_/", $lettertwo))


działa - ale czuję że to jest strasznie dookoła - jak siekierą. To chyba powinno być zrobione jakimś kodowaniem ...
Nie jestem pewien czy to wyczerpuje wszystkie możliwości, poza tym nie wiem czy tego i tak nie można jakoś obejść

może jest lepszy sposób?

baza jest w UTF8
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 12:26