Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Regex su variabile passata in GET

    Salve a tutti ragazzi!
    Mi servirebbe un'informazione: ho una pagina (risultati.php) che riceve in GET una variabile che poi stampo come immagine:
    risultati.php:
    Codice PHP:
    [img]' . $_GET['urlimmagine'] . '[/img]</center
    upload.php si chiude con:
    Codice PHP:
    header("Location: risultati.php?urlimmagine=" $urlimmagine); 
    Il problema è che al posto di $urlimmagine un utente cattivo potrebbe sostituire nell'url un js o qualsiasi altro codice non autorizzato. Mi chiedo quindi, come posso sostituire determinati caratteri dall'url? Cioè, un URL standard è questo:
    http:[...]risultati.php?urlimmagine=images/1261070475-nomeimmagine.jpg
    si potrebbe quindi scrivere per esempio:
    http:[...]risultati.php?urlimmagine=[XSS]

    Mi dite come posso parsare determinati caratteri? Non mi intendo molto di regex, mi servirebbe che foste abbastanza elementari nella spiegazione .
    Ancora meglio sarebbe effettuare un cotrollo nelle cartelle: se il file è presente, lo stampo, altrimenti redirecto a pagina di errore. Come faccio però?
    Grazie da subito!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    potresti fare dei controlli (anche senza regexp) sui caratteri inseriti (per esempio già con addslahes ottieni dei risultati): dipende da quali valori però devono essere ammissibili (si possono mettere percorsi? o cos'altro?)... l'ideale sarebbe comunque NON consentire queste operazioni e accettare solo dei parametri codificati (es.: codici numerici o solo nomi di file senza percorsi)

  3. #3
    Originariamente inviato da eiyen
    l'ideale sarebbe comunque NON consentire queste operazioni e accettare solo dei parametri codificati (es.: codici numerici o solo nomi di file senza percorsi)
    Ok, ho provato così, ma ho un problema:
    Codice PHP:
    if(is_numeric($_GET['urlimmagine'])){        echo' html con risultato...';
    }
    elseif(!
    is_numeric($_GET['urlimmagine'])){
    echo
    'Opsss! Si è verificato un errore!';} 
    Il problema è che l'errore ovviamente esce sempre perchè la variabile passata avrà sempre .jpg, .gif o .png...come posso ovviare?

  4. #4
    Ragazzi qualcuno mi sa aiutare? Sto diventando matto

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    puoi esplodere la variabile GET usando il punto come separatore e verificando che valore del primo elemento dell'array che ottieni sia numerico e che quello del secondo sia un testo di 3 caratteri uguale a quelli che vuoi accettare (jpg, gif, png...)

  6. #6
    Grazie mille, mi sono mosso con l'explode e funziona perfettamente. Unica domanda:
    dal momento che la variabile passata in GET è di questo tipo:
    cartella/timestamp-nomeimmagine.estensione
    per ottenere solo timestamp, che ovviamente è numerico, ho dovuto fare due explode distinti: con il primo ho utilizzato come separatore "/", col secondo ho preso per oggetto la stringa risultata dal primo explode ed ho utilizzato come separatore "-". C'è un modo migliore per prendere direttamente il valore timestamp senza tutti questi giri?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.