Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Sicurezza $_GET

  1. #1

    Sicurezza $_GET

    Ciao...

    Nel mio sito ho fatto una pagina come template che include in base all'id un menu e una pagina. L'id è indicato col il parametro id nella query

    index.php?id=###

    Il problema è che i dati poi vengono presi da un db mysql e vorrei essere sicuro di evitare qualche hack o peggio crack!

    Ecco il pezzo di codice relativo:
    codice:
    if (empty($_GET['id'])) { $_GET['id'] = 1; }
    $id=$_GET['id'];
    $dati=select_id();
    Funziona select_id();
    codice:
    global $id;
    	if(!isset($id)) { $id=1; }
    	if(ereg("[0-9]",$id)) {
    		$query = @mysql_query("select dati_vari from tabella where id='$id'");
    		$result = @mysql_num_rows($query);
    		if ($result != 1) {
    		return array(...pagina di errore...);
    		}
    		else {
    		$row = @mysql_fetch_array($query, MYSQL_ASSOC);
    		return array(...valori relativi all'id...);
    		}
    	}
    	else {
    		return array(...pagina di errore...);
    	}
    Dite che è sicuro??
    PS: sul server magic_quotes_gpc è impostato su ON
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  2. #2
    direi che id può assumere soltanto 10 valori quindi non hai problemi

  3. #3
    E' sicuro ... se il campo e' numerico qualunque numero passerebbe il check. Quindi basterebbe verificare che sia un numero intero.... sono i campi piu' tranquilli quelli numerici, basta non usarli per tirare fuori username e pwd.

    Le magic quote per i numeri servono a poco.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Eh eh ok grazie metterò anche un controllo che siano interi ^^
    Ma se inserisco un numero a due cifre funziona lo stesso, perchè è un ereg e non un preg...
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  5. #5
    Ma non sarebbe più facile utilizzare un is_numeric?

  6. #6
    Eh eh vabbè è uguale... un ereg e un is_numeric
    ^.^
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  7. #7
    Si ma l'ereg deve eseguire la regEx e quindi è più lento di is_numeric: non che conti moltro ma se php ti mette a disposizione una funzione apposta perchè non usarla?

  8. #8
    Eh eh allora vada per il is_numeric. Ma c'è un modo per eludere il controllo del is_numeric magari non so mettendo exit, o qualcosa di strano...?
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  9. #9
    Non ho capito che vuoi dire! :master:

  10. #10
    io prendo la variabile id
    $id = $_GET['id'];
    è possibile che qualcuno inserisca quale funzione o variabile o qualcosa di simile in modo che
    if(!is_numeric($id))
    restituisca un true anche se l'id non è numerico e quindi l'utente riesci magari ad eseguire del codice...
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.