Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    quesito $_SERVER['HTTP_REFER']

    Ciao a tutti!

    Da qualche tempo un amico per cui ho fatto un semplice form contatti che altro non fà che inviargli una mail con i dati raccolti nel form, lamenta che riceve centinaia di mail vuote al giorno..

    In pratica qualche buontempone si diverte (con qualche script?) a richiamare la pagina chiamata sul submit del form cosicchè questa invia le suddette mail..

    I check che già faccio sono i soliti, ossia esistenza del submit e via dicendo.. questi però sono inutili perchè basta sviluppare un php che richiama la pagina passandogil in post i valori che si aspetta che il check salta..

    Per ora ho messo una "pezza" facendo un check anche su $_SERVER['HTTP_REFER'] e verificando che sia la pagina del form.. Leggo però da php.net che $_SERVER['HTTP_REFER'] viene inviata dal client ed è anche modificabile con l'ovvia conseguenza che uno può far figurare come $_SERVER['HTTP_REFER'] la pagina in cui si trova il form..

    Ora vi chiedo: avete altre idee su come sia possibile essere sicuri che i dati che arrivano alla mia sendmail.php siano quelli proevnienti dal form?

    Già grazie
    dai diamanti non nasce niente dal letame nascono i fior
    UNGAWA! Tiki Bar
    Villa Camerini

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Ciao, tempo fa ho avuto un problema analogo con il guestbook di un amico.
    La soluzione migliore è fare uso di captcha, per essere "sicuri di aver a che fare con un utente e non uno script automatico.

    Se invece non vuoi che l'utente inserisca a mano il codice del captcha come soluzione intermedia si può usare javascript.
    Quando crei la pagina inserisci un campo hidden con un codice generato a caso, e al momento dell'invio del form sostituisci il codice del server con un altro elaborato tramite javascript.
    Anche una cosa semplice, come esempio lo stesso codice invertito, oppure se usi un codice numerico puoi restituire il codice del server + 1, o simili.

    Naturalmente questa soluzione non è efficace come la prima, ma ha il vantaggio di non richiedere nessuna ulteriore interazione dall'utente.
    Ciao,
    Lorenzo

  3. #3
    Utente di HTML.it L'avatar di Psyko83
    Registrato dal
    Mar 2006
    Messaggi
    424
    Io farei così:
    Mi creo un id ogni qual volta un utente entra nella pagina contatti con la form e quando vai nell'altra pagina, controlli che quell'id esista e sia lo stesso!
    Più o meno così:

    Test

  4. #4
    Intanto grazie ad entrambi..

    Originariamente inviato da lelefante
    Ciao, tempo fa ho avuto un problema analogo con il guestbook di un amico.
    La soluzione migliore è fare uso di captcha, per essere "sicuri di aver a che fare con un utente e non uno script automatico.

    Se invece non vuoi che l'utente inserisca a mano il codice del captcha come soluzione intermedia si può usare javascript.
    Quando crei la pagina inserisci un campo hidden con un codice generato a caso, e al momento dell'invio del form sostituisci il codice del server con un altro elaborato tramite javascript.
    Anche una cosa semplice, come esempio lo stesso codice invertito, oppure se usi un codice numerico puoi restituire il codice del server + 1, o simili.

    Naturalmente questa soluzione non è efficace come la prima, ma ha il vantaggio di non richiedere nessuna ulteriore interazione dall'utente.
    Come giustamente ipotizza lelefante non vorrei usare i captcha per evitare problemi con gli utonti..

    Però non ho ben capito l'altra soluzione che proponi.. Mettiamo che io generi questo codice random.. lo "trasformi con js".. ma poi come lo uso? A che scopo mi è utile per la verifica?
    :master: :master:

    Io farei così:
    Mi creo un id ogni qual volta un utente entra nella pagina contatti con la form e quando vai nell'altra pagina, controlli che quell'id esista e sia lo stesso!
    O non ho capito io oppure non risolvo il mio problemo perchè parto dall'ipotesi che il malintenzionato conosca (mica difficile..) le var da inviare in post alla pagina che manda la mail.. E poi se il codice lo genero di volta in volta come lo controllo di là?
    dai diamanti non nasce niente dal letame nascono i fior
    UNGAWA! Tiki Bar
    Villa Camerini

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    http://sourceforge.net/search/?type_...ds=php+captcha

    prendi ad esempio il primo link "b2evo" e fai un po' di prove. Non sembra male.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Grazie per il link che mi tornerà sicuramente utile in futuro.. Però in questo caso vorrei evitare di usare i captcha..

    Altre idee?



    dai diamanti non nasce niente dal letame nascono i fior
    UNGAWA! Tiki Bar
    Villa Camerini

  7. #7
    un uppettino..
    dai diamanti non nasce niente dal letame nascono i fior
    UNGAWA! Tiki Bar
    Villa Camerini

  8. #8

    ............

    Ciao.
    Prova questo semplice snippet
    che puoi modificare a tuo piacimento:
    Codice PHP:
    <?php 
    session_start
    ();
    $random md5(time());
    if(!isset(
    $_SESSION['fake_captcha']))
    {
        
    $_SESSION['fake_captcha'] = substr($random04);
        
    $_SESSION['check'] = $random;
    }
    if(isset(
    $_POST['test']))
    {
        if(
    $_SESSION['fake_captcha']==$_POST['test'])
        {
            echo 
    "Good user";
        }
        else
        {
            echo 
    "Uhmmm are you a bot !";
            
        }
    }
    ?>
    <form action="poster.php" method="post" name="frm">


    Scrivi le prime 4 lettere di questa stringa <?php echo "[b]".$_SESSION['check']."[/b]"?></p>
    <input name="test" type="text" maxlength="10">
    <input name="submit" type="submit" value="test">
    </form>
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Originariamente inviato da adrenokromo
    ...
    Però non ho ben capito l'altra soluzione che proponi.. Mettiamo che io generi questo codice random.. lo "trasformi con js".. ma poi come lo uso? A che scopo mi è utile per la verifica?
    Diciamo che lato server generi un codice random di sicurezza.
    Salvi questo codice in una variabile di sessione...
    Codice PHP:
    $code genera_codice_casuale();
    $_SESSION['code_sec'] = $code
    ...e lo inserisci in un campo hidden del form da inviare.
    Codice PHP:
      <form action="target.php" method="post">
        ...gli altri campi del form
        <input type="hidden" id="cod_sec" name="code_sec" value="<?=$code?>" />
        ..resto del form
      </form>
    Lato client devi catturare l'evento di invio del form e applicare al valore del campo code_sec l'algoritmo che preferisci.
    Ad esempio supponiamo di invertire la stringa:
    Codice PHP:
      function submitHandler() {
        var 
    el document.getElementById('code_sec');
        
    el.value reverse(el.value);
      } 
    Lato server devi controllare, anzitutto che il campo hidden venga inviato, e che contenga effettivamente la stringa invertita

    Codice PHP:
      if(isset($_POST['code_sec'])) {
        if(
    $_SESSION['code_sec'] === reverse($_POST['code_sec'])) {
          
    //OK, qui puoi ragionevolmente pensare di aver a che fare
             //con una persona...forse ;)
        
    }
      } 
    Le due funzioni reverse le devi scrivere tu, sia in PHP, sia in Javascript, se non esistono già. Oppure le puoi sostituire con qualche algoritmo più astruso...ma in effetti non migliore di molto l'efficacia del metodo.
    Il problema principale di questo sistema è, naturalmente, l'utilizzo di javascript:

    1 - Se l'utente l'ha disabilitato, il server non accetterà mai il form.
    2 - Qualcuno può sempre pensare di leggersi il tuo codice, capire il meccanismo, e a quel punto sei da capo.

    E' anche vero che se qualcuno ha così tanta voglia di darti fastidio, può essere divertente vedere chi è più bravo

    Spero di esserti stato utile.
    Ciao,
    Lorenzo

  10. #10
    mail vuote

    quindi non controlli se le variabili sono != "" prima di inviare la mail?

    evitate captcha
    sono scomodi

    prima controllate un attimo se si può risolvere con due controlli banali

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.