Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]&[MySQL] - Zapytanie z $_GET
Forum PHP.pl > Forum > Przedszkole
Wieviór
Powiedzmy, że mam stronę www.strona.pl/pokazuzytkownika.php?id=7645

Jego dane wyczytuję z bazy poprzez zapytanie z WHERE id = $_GET[id]. Wszystko ładnie, tylko pozostaje kwestia bezpieczeństwa, bo przecież w tego $_GET'a sporo można sobie wpisać, UNION jakiś czy coś.

Czytałem na stronie głównej artykuł o tym i powoli usuwam luki z zabezpieczeniach:

  1. <?php
  2. $striped = strip_tags ($_POST[id]);
  3. $gotowy = mysql_real_escape_string ($striped);
  4. $sql = "SELECT * FROM uzytkownicy WHERE id = '".$gotowy."'";
  5. ?>


Czy to wystarczy, i czy w ogóle dobrze robię?
kris2
według mnie to wystarczy smile.gif
Cysiaczek
@Wieviór - no nie jesteś nowy na forum...exclamation.gif!
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole
batman
Tak, takie coś powinno wystarczyć, jednak pamiętaj, że skoro potrzebujesz id, to nie baw się w usuwanie tagów, itp, lecz od razu przejdź do rzeczy. Możesz sprawdzić przy pomocy is_numeric, czy zmienna jest liczbą lub zrzutowac przy pomocy (int).

  1. <?php
  2. // przyklad 1
  3. if(is_numeric($_GET['id'])) {
  4. // select ...
  5. }
  6.  
  7. // przyklad 2
  8. $sql = 'select * from tabela where id = '.(int)$_GET['id'];
  9. ?>
Wieviór
@Cysiaczek: Słusznie szefie, już poprawiam ;]

@batman: Podałem zły przykład, rzeczywiście gdy mam int to nie ma problemu, bo mogę zrobić jak pokazałeś, ale gdy to jest np. nazwa użytkownika przy logowaniu?
batman
Jeśli pobierasz dane od użytkownika, które przesyłasz do bazy danych trzeba:
1. strip_tags.
2. Czasem dla pewności można użyć htmlentities.
3. Użyć funkcji escape_string.

Dobrym zwyczajem jest ograniczyć długość ciągu, jaki jest podawany przez użytkownika. Najpierw w JS sprawdzić długość, następnie po stronie serwera.
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.