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

A więc, podaje część kodu o którą w tej chwili się obawiam [jest to taka prosta wyszukiwarka]
<?php <form action="list.php" method="get"><p> <input type="hidden" name="cat" value="" /> <input type="text" name="search" class="text" maxlength="20" /> <input type="submit" value="" class="submit" /> </p></form> "); ?>
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
<?php if ($cat!="") { $warunek="WHERE `cat_id`='$cat'"; //to jest warunek do wyswietlania rekordów poprzez wybieranie kategori } else { $warunek=""; //tak będzie w przypadku używania wyszkiwarki } if ($search!="") { $warunek2="WHERE `title` LIKE '%$search%'"; // tutaj jest warunek do wyświetlania rekordów poprzez wyszukiwarke } else { $warunek2=""; // tak będzie jeśli będziemy wybierali rekordy poprzez kategorie } ?> <?php require_once "baza.php"; //tutaj jest info wymagane do połączenia się z bazą $queryL="SELECT * FROM `dane` $warunek $warunek2 ORDER BY `title`"; //no i zapytanie. ?>
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?

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ć

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

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