Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    39

    [PHP] Sicurezza dei form

    Allora... Vorrei essere sicuro che i form (POST), che inviano dati al mio "sistema", provengano SEMPRE dallo stesso HOST/DOMINIO, dove si trova appunto il sistema PHP.

    Al momento ho visto che tutti fanno un "check" sulla variabile $_SERVER['HTTP_REFERER'].

    Molti dicono di usare una specie di "token" salvato in sessione e "embeddato" come input-hidden, da controllare prima di ogni operazione..

    Questo l'ho già fatto, ma l'unica cosa utile è che non permette di eseguire operazioni "continue" tipo "bot". MA.. non offre una reale protezione (secondo me) ...

    Questo perchè l'utente "maligno" non deve far altro che copiarsi il campo Hidden contenente il "token" di controllo e incollarlo nel suo form modificato "ad hoc", e quindi spedirlo assegnando l'url del sistema online all'attributo "action" del form... ed è fatta! :P


    Domande:


    1. La variabile 'HTTP_REFERER' è inviata da tutti i browser?? Ed è considerata abbastanza affidabile/sicura??
    2. Esiste un metodo alternativo??


    Thanks!

  2. #2
    Il token lo devi generare tu, lo inserisci nel form e lo memorizzi in sessione, quando leggi i dati dal post, verifichi se il token inviato mediante il post è uguale a quello presente in sessione.
    In questo modo l'utente "maligno" inserirà un token che non è presente in sessione quindi il sistema non utilizzerà i dati.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    39
    Esempio:
    - genero un token e lo copio in sessione
    - metto il token nel form

    Utente maligno:
    - mantenendo aperto il browser (sessione aperta), copio il form (compreso il token) in una pagina fittizia
    - invio i dati

    Cosa succcede?
    - il sistema riceve il form con il token VALIDO
    - confronta con quello nella sessione (che è ancora aperta, quindi valido)
    - l' operazione è considerata VALIDA!

    Mi sbaglio?!?!

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sì, funziona così, ma infatti i malintenzionati si fermano con la validazione degli input che arrivano allo script che riceve i dati dal form, non con un token.
    Il token ti serve per non avere richieste multiple o bloccare i bot, ogni volta che ricevi i dati dal form distruggi il token che c'è in sessione, così la richiesta successiva con lo stesso token non funziona più.
    Se uno vuole ricompilare lo stesso form deve ricaricare la pagina in modo che venga generato un nuovo token.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    39
    Essì.. è quello che pensavo (e che ho detto) ..
    con il token posso solo evitare dei post "ripetuti".

    Ma, che voi sappiate, la variabile $_SERVER['HTTP_REFERER'] viene spedita da tutti i browser? O ne esiste un' altra simile?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    I maggiori browser inviano tutti il riferimento http_referer.
    Non puoi essere però certo che arrivi, perché ci sono casi particolari in cui l'invio viene inibito.
    Ciò accade per esempio se sul PC dell'utente c'è un qualche software per la sicurezza che blocca l'invio di tale informazione, se si arriva sulla pagina da un link presente in un elemento Flash (ma non credo sia il tuo caso), se si arriva sulla pagina partendo da una che si trova su protocollo https, se la pagina di destinazione viene aperta in una finestra di popup e qualche altro caso.

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.