Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dane z formularza a polecenie LIKE
Haczyk67
post 28.03.2009, 16:11:05
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 15.02.2009

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


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?
Go to the top of the page
+Quote Post
Maciekbjw
post 28.03.2009, 16:21:06
Post #2





Grupa: Zarejestrowani
Postów: 217
Pomógł: 23
Dołączył: 2.12.2007
Skąd: Warszawa

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


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ć.


--------------------
Masz swoje mieszkanie i chcesz je wynająć? Sprawdź ofertę Zarzadządzanie Najmem

WRONA.IT - pozycjonowanie stron
www.ecyklopedia.pl
Go to the top of the page
+Quote Post
Haczyk67
post 29.03.2009, 10:32:48
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 15.02.2009

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


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ć?
Go to the top of the page
+Quote Post
Fifi209
post 29.03.2009, 10:52:12
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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);


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Haczyk67
post 29.03.2009, 11:06:03
Post #5





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 15.02.2009

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


Widzę że Google ignoruje %

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

chyba też tak zrobię ;P
Go to the top of the page
+Quote Post
mls
post 29.03.2009, 13:24:23
Post #6





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


  1. <?php
  2. $dane_z_formularza = str_replace('%', '%%', $dane_z_formularza);
  3. ?>

przed przekazaniem do zapytania SQL...


--------------------
Go to the top of the page
+Quote Post
Haczyk67
post 29.03.2009, 13:44:55
Post #7





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 15.02.2009

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


Rozumiem że %% działa na tej samej zasadzie co // , tak?
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: 16.07.2025 - 16:16