Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37

Discussione: Form Mail insicuro?

  1. #1

    Form Mail insicuro?

    Salve a tutti...
    volevo chiedere una mano in questo senso.
    attraverso questo invia_mail.php ricevo il risultato del form.
    in Pratica c'e' un database dove c'e' il contatore dei form inviati quindi ad es
    Richiesta n° IT 309/0809

    dove quel 08/09 viene preso dalla data quindi
    $data = date('dm');

    Fin qui tutto bene.....

    Da un paio di giorni ricevo i form compilati fhgfhhgfhgfd@nomemiosito.it
    20/25 mail di fila con caratteri a caso compilati in un decimo di secondo

    in pratica e' come se uno direttamente facesse partire lo script con un robot (ovviamente non e' uno che compila il form a mano)

    Ho notato infatti che se io faccio www.miosito.it/invia_mail.php arriva la mail vuota.
    Presumo sia un bug che uno puo' sfruttare

    Quale protezione potrei mettere?

    codice:
    <?php
    include("connect.inc.php");
    $connect = mysql_connect($host, $user, $passwd) or die ("Non connesso");
    $immagine="images/header.gif";
    include ("header.php");
    $lang = "Richiesta n° IT";
    $data = date('dm'); 
    $query="SELECT * FROM $tablename ORDER BY id DESC"; 
    $result=mysql_query($query, $connect);
    $row = mysql_fetch_array($result);
    $conta= $row[contatore];
    $conta=$conta+1;
    $modifica = "UPDATE $tablename SET contatore='$contarequest'";
    $esegui =mysql_query($modifica, $connect);
    $Oggetto = $lang.$contarequest."/".$data; 
    $pren=$contarequest."/".$data;
    echo "<link href='text.css' rel='stylesheet' type='text/css'>";
    echo "<p align='left'><font face='Verdana' size='2' color='white'>";
    echo " Il form è stato compilato in maniera corretta.
    ";
    echo " La richiesta essere la seguente: 
    
     $Oggetto 
    ";
    echo " Nome: $nome
    ";
    echo " E-Mail: $indmail
    ";
    echo " Note: $note
    
    
    ";
    include ("footer.php");
    $to = "mail@mioindirizzo.it";
    $body ="";
    $body = $body."Nome: $nome\nEmail: $indmail\n";
    $body = $body."Note:$note\n";
    $body = $body."\n\n";
    $body = $body."\n\n";
    $emailheaders = "From: " . $nome . "<". $indmail . ">\nReply-To: " . $indmail;
    mail($to,$Oggetto,$body,$emailheaders);
    mysql_close($connect);
    ?>
    Webmasterarea.it (scripts, guide ecc) Ora anche scambio banner
    Io ho fatto la mia scelta

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    per evitare che andando direttamente sul url della pagina venga inviata una email vuota... potresti inserire un controllo del tipo:

    nel form metti un campo nascosto e lo chiami per esempio FROM e ci metti come valore "quello che vuoi"... poi nella pagina mail controlli che se $_REQUEST['from'] != "quello che vuoi" non vai avanti nella spedizione della email...

    questa è una soluzione banale...non so se basti x evitare xo' il tuo problema.....


  3. #3

    allora

    allora io sono un po' niubbo...
    tu dici nel file .htm faccio un campo che lo chiamo controllo ad esempio e ha come valore hidden ad es° speriamochevada


    nel file.php prima di tutta la pappardella faccio

    se controllo=speriamochevada allora ......

    giusto? in pratica solo se c'e' significa che non me lo stanno bypassando....

    unica cosa non saprei quale e' il codice in php per fare sto if :rollo:
    Webmasterarea.it (scripts, guide ecc) Ora anche scambio banner
    Io ho fatto la mia scelta

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    il campo hidden è il seguente:

    <input name="from" type="hidden" value="quellochevuoi">

    nella pagina dove raccogli i dati provenienti dal form, aggiungi:

    codice:
    $controllo = $_POST['from'];
    
    if ($controllo != "quellochevuoi")
    die ("Non provieni dalla pagina corretta!");

  5. #5

    perfetto....

    provo ed incrociamo le dita
    Webmasterarea.it (scripts, guide ecc) Ora anche scambio banner
    Io ho fatto la mia scelta

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    483
    se hai problemi fammi sapere..

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    321
    avete trovato qualche altra soluzione?
    Ciao
    ::Steve::

  8. #8
    Il controllo lo puoi fare qui:

    codice:
    <?php
    
    if(empty($_POST['nome']) || empty($_POST['cognome']))
    {
        echo 'Inserire nome e cognome. Torna endrio macarun!';
    }
    else
    {
    include("connect.inc.php");
    $connect = mysql_connect($host, $user, $passwd) or die ("Non connesso");
    $immagine="images/header.gif";
    include ("header.php");
    $lang = "Richiesta n° IT";
    $data = date('dm'); 
    $query="SELECT * FROM $tablename ORDER BY id DESC"; 
    $result=mysql_query($query, $connect);
    $row = mysql_fetch_array($result);
    $conta= $row[contatore];
    $conta=$conta+1;
    $modifica = "UPDATE $tablename SET contatore='$contarequest'";
    $esegui =mysql_query($modifica, $connect);
    $Oggetto = $lang.$contarequest."/".$data; 
    $pren=$contarequest."/".$data;
    echo "<link href='text.css' rel='stylesheet' type='text/css'>";
    echo "<p align='left'><font face='Verdana' size='2' color='white'>";
    echo " Il form è stato compilato in maniera corretta.
    ";
    echo " La richiesta essere la seguente: 
    
     $Oggetto 
    ";
    echo " Nome: $nome
    ";
    echo " E-Mail: $indmail
    ";
    echo " Note: $note
    
    
    ";
    include ("footer.php");
    $to = "mail@mioindirizzo.it";
    $body ="";
    $body = $body."Nome: $nome\nEmail: $indmail\n";
    $body = $body."Note:$note\n";
    $body = $body."\n\n";
    $body = $body."\n\n";
    $emailheaders = "From: " . $nome . "<". $indmail . ">\nReply-To: " . $indmail;
    mail($to,$Oggetto,$body,$emailheaders);
    mysql_close($connect);
    }
    
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    321
    Ciao Surfair ,
    ho provato il tuo script (ne utilizzo già uno simile) ma non funziona in questo caso perchè viene baipassato riempiendo i campi con valori a caso...
    ::Steve::

  10. #10
    Non capisco come viene baipassato cmq prova così:
    codice:
    if(!eregi("invia_mail.php", $_SERVER['PHP_SELF']))
    {
        exit('Accesso negato');
    }

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.