Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] sql injection pytan kilka
paziek
post 16.11.2006, 22:47:58
Post #1





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

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


Witam,
zacząłem zabawę z php oraz MySQL dwa tygodnie temu, od tego czasu próbuje `postawić` swoją pierwszą stronkę, która będzie czymś więcej aniżeli zadaniem domowym z informatyki w gimnazjum.

Pomijając dalszą część nudnego wstępu, przejdę do sedna:

Strasznie boje się tych SQL Injection/Insertion i reszty `badziewia`, które może naruszyć bezpieczeństwo mojej bazy danych.. ohmy.gif



A więc, podaje część kodu o którą w tej chwili się obawiam [jest to taka prosta wyszukiwarka]

  1. <?php
  2. echo("
  3.  <form action="list.php" method="get"><p>
  4. <input type="hidden" name="cat" value="" />
  5. <input type="text" name="search" class="text" maxlength="20" />
  6. <input type="submit" value="" class="submit" />
  7. </p></form>
  8. ");
  9. ?>


Ten formularz ma dopisać do adresu www.domena.pl/list.php wartość ?cat=&search[tutaj wpisana wartość do pola text].


A teraz skrypt [jego część], który jest odpowiedzialny za wybranie odpowiednich rekordów w bazie

  1. <?php
  2. if ($cat!="")
  3. {
  4. $warunek="WHERE `cat_id`='$cat'"; //to jest warunek do wyswietlania rekordów poprzez wybieranie kategori
  5. }
  6. else
  7. {
  8. $warunek=""; //tak będzie w przypadku używania wyszkiwarki
  9. }
  10.  
  11. if ($search!="")
  12. {
  13. $warunek2="WHERE `title` LIKE '%$search%'"; // tutaj jest warunek do wyświetlania rekordów poprzez wyszukiwarke
  14. }
  15. else
  16. {
  17. $warunek2=""; // tak będzie jeśli będziemy wybierali rekordy poprzez kategorie
  18. }
  19.  
  20. ?>
  21.  
  22. <?php
  23. require_once "baza.php"; //tutaj jest info wymagane do połączenia się z bazą
  24.  
  25.  
  26. $queryL="SELECT * FROM `dane` $warunek $warunek2 ORDER BY `title`"; //no i zapytanie.
  27. ?>


I teraz pytania do skryptu:

1. Czy istnieje możliwość aby za pomocą SQL injection [lub inną niepowołaną metodą] zamienić SELECT na coś innego? Np. DELETE lub UPDATE? Co gorsza - DROP TABLE? Ewentualnie jakimś sposobem dodać drugie zapytanie? Z tego co zdołałem wyczytać przez te kilka godzin goglowania i searchowania forów to takie coś jest nie możliwe, a przynajmniej nie w MySQL.

2. Czy istnieje możliwość zmodyfikowania tego zapytania tak, aby wybrało rekordy z innej tabeli aniżeli `dane` ?

3. Czy da się zmodyfikować to zapytanie tak, aby sortowało wg innej kolumny aniżeli `title`?

4. Czy da się zmodyfikować to zapytanie tak, aby wySELECTowało inne/dodatkowe kolumny prócz zdefiniowanych [tutaj akurat wybiera wszystkie, więc jest to bez znaczenia, ale tak pytam]?

5. Co tutaj ktoś może jeszcze wykombinować, tak aby popsuć mi chumor? smile.gif



A tutaj pozostałe pytania:

1. Dlaczego pododawało mi slashe w tym BBcode od php? Teraz to się kolorki rozjechały i nic nie widać ohmy.gif EDIT: Heh, tak jest tylko w podglądzie, po wysłaniu posta wygląda tak jak ma wyglądać ;-)

2. Gdzie znajde jakieś typowe [i nie typowe] metody SQL injcetion, wraz z przykładami jak to robić? Chciałbym samemu sprawdzić czy się już zabezpieczyłem, czy dalej mam w skrypcie jakieś dziury.





Załóżmy, że strona to będzie baza danych z informacjami o różnych albumach muzycznych. Stąd kategorie oraz wyszukiwarka po tytułach.

Później mam zamiar zrobić jeszcze formularz do dodawania/aktualizowania rekordów w tabeli, więc znowu tutaj będę potrzebował się dowiedzieć, co ktoś wredny może mi zrobić, bo formularz będzie publicznie dostępny dla każdego, więc..
Pomińmy fakt, że w taki sposób jak odwiedzi mnie jakiś `wieśniak`, to sobie będzie mógł powrzucać wszędzie wartość `dupa` i zamieni moją stronkę w dokładnie to samo laugh.gif



Narazie to chyba tyle.
Dzięki z góry za wszelką pomoc.

Ten post edytował paziek 16.11.2006, 22:50:44
Go to the top of the page
+Quote Post
nospor
post 16.11.2006, 22:58:10
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wystarczy ze przeczytasz topic z ktorego cie wydzieliem a bedziesz wiedzial wszystko jak sie przed tym ewenetualnym czyms obronic. po co wiec zasmiecasz i tak zasmiecony juz topic? wydzielam


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 31.07.2025 - 10:47