Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dane z formularza a polecenie LIKE
Forum PHP.pl > Forum > PHP
Haczyk67
Pobieram dane z formularza i wykorzystuję je do wykonania zapytania do MySQL z poleceniem LIKE '%$dane_z_formularza%'.

Wyczytałem że mysql_real_escape_string nie zabezpiecza przed atakiem SQL Injection z użyciem znaków %. Intruz może dopisać '%' w formularzu i wykonać wpisane przez siebie polecenie. Nie mogę usunąć '%' z zapytania bo takie znaki też mogą się znaleść w bazie. Jak zabezpieczyć się przed tym?
Maciekbjw
Znany problem smile.gif

Rozwiązań masz kilka

Kiedyś użyłem chyba czegoś takiego:
  1. <?php
  2.  if(!preg_match('/%/',$_POST['fraza']))
  3.      {
  4.  
  5.         //tutaj zapytanie SQL
  6.      }
  7.   else {
  8.          //nie wykona zapytania
  9. }
  10.  
  11. ?>


Niemniej można to też inaczej rozwiązać.
Haczyk67
Hm nie do końca o takie rozwiązanie mi chodzi. Przecież fraza może być np. "50%". Dlaczego mam nie wykonywać zapytania tylko dlatego że ktoś wpisał %? Jak to inaczej rozwiązać?
Fifi209
Ja nie widzę problemu przy zapisie %
możesz go zapisać jako np. {$37$}

i stworzyć prosty parser takich znaków ;d

a wyświetlisz go potem:
chr(37);
Haczyk67
Widzę że Google ignoruje %

http://www.google.pl/search?hl=pl&q=50...=Szukaj&lr=

chyba też tak zrobię ;P
mls
  1. <?php
  2. $dane_z_formularza = str_replace('%', '%%', $dane_z_formularza);
  3. ?>

przed przekazaniem do zapytania SQL...
Haczyk67
Rozumiem że %% działa na tej samej zasadzie co // , tak?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.