Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sql injection pytan kilka
Forum PHP.pl > Forum > Przedszkole
paziek
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.
nospor
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
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.