• User Attivo

    Sicurezza dati in ingresso da form

    Ciao a tutti, con un controllo di questo tipo ad esempio sul campo nome di un form:

    </SPAN>codice PHP:
    $errore=eregi('[a-z]{'.$min.','.$max.'}',$str);

    Nel caso un utente inserisca ad esempio:

    <script>while(true){alert("Ah ah ah");}</script>

    E' sufficiente per difendersi?


  • ModSenior

    Ciao Symon83,

    Se non deve essere inviato codice html puoi usare la funzione htmlentities per convertire i caratteri nelle corrispondenti entità html.
    Comunque senza capire come dovrai utilizzare la cosa è impossibile consigliarti un metodo adatto alle tue esigenze.


  • User

    Assolutamente no!
    Hai sbagliato funzione guarda! php.net/eregi.

    Usa preg_match.

    Il tuo esempio chiede se all'interno di str c'è una o più lettere dell'alfabeto..che protezione è?


  • User Attivo

    Si si infatti poi ho quando ho fatto la prova ho messo htmlentities() per proteggermi, solo pensavo che quella condizione bastasse perchè passo la stringa e gli dico che deve avere una lunghezza minima e massima e accetta solo lettere dell'alfabeto, senza caratteri strani. Forse non ho ben presente il funzionamento di eregi. Darò un'occhiata grazie! ciao


  • User Attivo

    Io ti consiglio di fare così [URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"][URL="javascript:hidediv()"]:

    [PHP]if(!get_magic_quotes_gpc()){
    $contents =addslashes(htmlentities($_POST['contents'],ENT_QUOTES));
    }else{
    $contents = addslashes(htmlentities(stripslashes($_POST['contents']),ENT_QUOTES));
    }[/PHP]

    E poi ti recuperi i valori dal db così :
    [PHP]while($row = mysq_fetch.....){
    $row['contents'] = stripslashes($row['contents']);
    }[/PHP]