Jakiego zabezpieczenia potrzebuje moja galeria zdjęć?

0

Czy wymaga zabezpieczenia i jakiego galeria zdjęć ?

Wszystki pliki stron są plikami .php
Przykładowo mam stronę kategorie.php na której umieszczone są linki do poszczególnych kategorii np.
<a href="kategoria.php?zmienna=grafika&strona=1">Grafika</a>
Po kliknięciu na link przechodzimy ze strony kategorie.php na kategoria.php?zmienna=grafika&strona=1
pobieram zmienne motodą GET i każe wyświetlić obrazki, których rekord kategoria w bazie mysql równa się mojej zmiennej (czyli w tym przypadku grafika)
$strona odpowiada za wyświetlenie odpowiedniej strony kolejnych rekordów (pierwsze 10 w tym przypadku)

Nasuwa się pytanie jak użytkownik może mi zaszkodzić bo przecież może w adresie pozmieniać moje zmienne.

0

A jak wygląda to zapytanie?
Jakoś tak:

select * from obrazki where kategoria=$zmienna

? A co jak ktoś za zmienną wpisze na przykład jakieś

cośtam; drop database;

?

0

Zapytanie wygląda mniej więcej tak jak napisałeś, dokładniej:

WHERE kategoria LIKE '$zmienna'

Jak wpisuje cośtam; DROP DATABASE; albo coś podobnego to przechodzi na strone, ale nie wyświetla żadnych obrazków

dlatego nie wiem czy w jakiś sposób moze zaszkodzić

Z tym że ja to mam u siebie na kompie, używam xampp, a jak to będzie na jakimś serwerze to nie wiem jak się będzie zachowywało dokładnie.
planuje to wrzucić na ovh

Z tym że jak wpisze do ziennej: grafika%auta to pokaże te obrazki które należą do obu kategorii łącznie.
Nie jest to może jakieś straszne, no ale jest to jakaś ingerencja.

0
zielonykwas napisał(a)

Jak wpisuje cośtam; DROP DATABASE; albo coś podobnego to przechodzi na strone, ale nie wyświetla żadnych obrazków

Bo pewnie sypie Ci błędem.
Spróbuj: dupa%27%3BDROP%20DATABASE%3B%27

zielonykwas napisał(a)

dlatego nie wiem czy w jakiś sposób moze zaszkodzić

Może. Poczytaj o SQL Injection.

zielonykwas napisał(a)

Z tym że jak wpisze do ziennej: grafika%auta to pokaże te obrazki które należą do obu kategorii łącznie.
Nie jest to może jakieś straszne, no ale jest to jakaś ingerencja.

NIGDY nie ufaj danym od usera. ZAWSZE zabezpieczaj znaki specjalne z danych od usera. OGRANICZAJ dostęp usera maksymalnie jak się da.
PAMIĘTAJ! Userzy są źli. Userzy robią nie to, czego od nich oczekujesz. Userzy chcą posiąść Twoją bazę danych.
CZUWAJ! Userzy nie śpią! ;)

Żeby nie wynajdywać koła na nowo możesz użyć jakiegoś ORMa, który się zatroszczy o właściwe przetworzenie danych przed konstrukcją zapytania SQL.
I kup sobie jakąś książkę. Np. "Testowanie zabezpieczeń aplikacji internetowych", są tam podstawowe informacje na temat sposobów włamań. Będziesz wiedział czego unikać. Na początek możesz spróbować uniknąć PHP ;)

0

dzięki za odpowiedź,
o SQL Injection trochę czytałem, pewnie za mało.

jak wpisze dupa%27%3BDROP%20DATABASE%3B%27 to sypie błąd: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in
ale przy DROP DATABASE, cośtam, nie pokazuje błędów.

co do filtrowanie to próbowałem ctype, ale coś mi polskich znaków nie uznawało za litery (kodowanie mam utf-8)
na całej galerii występują praktycznie tylko dwie zmienne, żadnych skomplikowanych formularzy nie mam, więc dlatego się zastanawiam czy aby SQL Injection może w ogóle u mnie zaistnieć. w zabezpieczeniach standardowych php nic nie majstrowałem, więc chyba w trybie bezpiecznym to działa.

Ale wiadomo lepiej zapobiegać.

0
zielonykwas napisał(a)

jak wpisze dupa%27%3BDROP%20DATABASE%3B%27 to sypie błąd: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

Chodzi o pokazanie, że jeśli do zapytania przeklejasz dane od usera bez przetworzenia, to może on się wciąć w środek query z dowolnym innym. DROP TABLE nazwa np. ładnie Ci wyczyści dane.

zielonykwas napisał(a)

na całej galerii występują praktycznie tylko dwie zmienne, żadnych skomplikowanych formularzy nie mam, więc dlatego się zastanawiam czy aby SQL Injection może w ogóle u mnie zaistnieć.

Wystarczy jedna taka zmienna.

zielonykwas napisał(a)

w zabezpieczeniach standardowych php nic nie majstrowałem, więc chyba w trybie bezpiecznym to działa.

Już dawno w PHP nie dłubałem (programowanie i adminowanie), ale tryb bezpieczny raczej nic do tego nie ma.

1 użytkowników online, w tym zalogowanych: 0, gości: 1