Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]&[MySQL] - Zapytanie z $_GET, Kwestia bezpieczeństwa
-Wieviór-
post
Post #1





Goście







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ę?

Ten post edytował Wieviór 23.09.2007, 12:13:30
Go to the top of the page
+Quote Post
kris2
post
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

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


według mnie to wystarczy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@Wieviór - no nie jesteś nowy na forum...(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole
Go to the top of the page
+Quote Post
batman
post
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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. ?>
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #5





Goście







@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?
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 12:56