Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Sicurezza dati input

  1. #1

    Sicurezza dati input

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

    Codice PHP:
    $errore=eregi('[a-z]{'.$min.','.$max.'}',$str); 
    nel caso un utente inserisca ad esempio:

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

    è sufficiente per difendersi?
    5ym0

  2. #2

  3. #3
    Si l'ho già inserito htmlentities() ma mi chiedevo, come mai usando solo quell'espressione non funziona il controllo? dovrebbe prendere solo le lettere dell'alfabeto o mi sbaglio?
    5ym0

  4. #4
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087

    Re: Sicurezza dati input

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

    Codice PHP:
    $errore=eregi('[a-z]{'.$min.','.$max.'}',$str); 
    nel caso un utente inserisca ad esempio:

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

    è sufficiente per difendersi?
    io metterei: strip_tags poi trim (che togli all'inizio ed alla fine gli spazi vuoti e nell'input dell'html maxlenght (penso sia questo) che definisce un num massimo di caratteri.

  5. #5
    Ma le funzione che ti ho suggerito in PVT non le hai testate?
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Originariamente inviato da alcio74
    Ma le funzione che ti ho suggerito in PVT non le hai testate?
    L'avevo postato prima che mi rispondessi tu in PVT!
    Simone
    5ym0

  7. #7
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    Originariamente inviato da alcio74
    Ma le funzione che ti ho suggerito in PVT non le hai testate?
    di grazia,
    visto che ciascuno porge il proprio piccolo contributo e visto che mi piacerebbe migliorare, è possibile rendere pubbliche le funzioncine? ... discuterne insieme?
    ad es. in un input text si dovrebbe
    - imporre sull'html un lunghezza massima di caratteri
    - uno strip_tags per togliere codice o .. dipende (se possono essere accettate le parentesi angolari) uno str_replace("&lt;", "<", "$_POST['nome']);
    - poi un htmlentities, ed all'estrazione html_entity_decode
    - una trim() anche per evitare che sia stato dato il focus all'input ed al controllo isset(...) restituisca TRUE, senza contare che si può ricorrere al controllo enpity.

    Le funzioncine cosa suggeriscono?

    ciao e grazie

  8. #8
    Originariamente inviato da *pragma
    di grazia,
    visto che ciascuno porge il proprio piccolo contributo e visto che mi piacerebbe migliorare, è possibile rendere pubbliche le funzioncine? ... discuterne insieme?
    ad es. in un input text si dovrebbe
    ciao e grazie
    Scusate tutti, una precisazione è dovuta: dato che in un'altra discussione Alcio mi aveva accennato della siurezza dei dati, oltre ad aver pubblicato questo post avevo anche mandato un msg privato ad Alcio, per questo motivo mi ha risposto in PVT. Credo sia l'unico motivo per cui non abbia reso disponibili a tutti le funzioncine non per chissà quale motivo. Se così non fosse verrò smentto da Alcio!
    Ciao
    5ym0

  9. #9
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    Originariamente inviato da Symon83
    Scusate tutti, una precisazione è dovuta: dato che in un'altra discussione Alcio mi aveva accennato della siurezza dei dati, oltre ad aver pubblicato questo post avevo anche mandato un msg privato ad Alcio, per questo motivo mi ha risposto in PVT. Credo sia l'unico motivo per cui non abbia reso disponibili a tutti le funzioncine non per chissà quale motivo. Se così non fosse verrò smentto da Alcio!
    Ciao
    ok l'ho detto in tono scherzoso! ... ho mancato d'inserire le faccine!!!

    qualche suggerimento su quello che ho scritto io?

    grazie

  10. #10
    Preciso anche io, che mi ero informato perché pensavo che Symon83 avesse trovato dei problemi nell'usarle, o peggio ancora che non gli funzionassero a dovere!

    @*pragma
    Le funzioni sono relativamente semplici.
    La prima serve per validare il testo, e opportunamente modificate per contare di quanti caratteri è composto.
    Sfrutta semplicemente una espressione regolare per controllare che ci siano solo alcuni caratteri e non altri (come le parentesi angolari, per esempio).
    Al posto di mettersi a fare il decode degli elementi HTML, li blocco e restituisco un messaggio di errore!
    La funzione è come segue:
    Codice PHP:
    function validaTesto($str){
      return (bool) 
    preg_match("^[[:alnum:]\.\,\;\:\!\?\-\_\(\)\[\]\'\"\»\«]+$^"$str);

    La seconda funzione invece, che uso dopo la validazione del testo, sostituisce tutti i caratteri speciali (lettere accentate, caratteri particolari come l'ampersand eccetera) in caratteri XHTML friendly.
    In questo modo, si evitano problemi di compatibilità tra il charset di MySQL e quello della pagina HTML, in più si va a fare l'escape su tutti i caratteri tipo il % e gli apici, per evitare ulteriori problemi.
    Codice PHP:
    function filtraTesto($str){
        
    $str stripslashes($str);
        
    $caratteri get_html_translation_table(HTML_ENTITIESENT_QUOTES);
        
    $str strtr($str$caratteri);    
        
    $str mysql_real_escape_string($str);
        
        return 
    $str;

    Se vuoi imporre un limite minimo e massimo ai caratteri presenti nel testo da filtrare (tipo per un controllo di validità sulle password), puoi modificare la funzione come segue:

    Codice PHP:
    function validaTesto($str$min$max){
      return (bool) 
    preg_match("^[[:alnum:]\.\,\;\:\!\?\-\_\(\)\[\]\'\"\»\«]{$min$max}+$^"$str);
    }
    function 
    filtraTesto($str){
        
    $str stripslashes($str);
        
    $caratteri get_html_translation_table(HTML_ENTITIESENT_QUOTES);
        
    $str strtr($str$caratteri);    
        
    $str mysql_real_escape_string($str);
        
        return 
    $str;
    }

    if (!
    validaTesto($testo_da_controllare1020)) {
    echo 
    "Spiacente, hai inserito dei caratteri non voluti, oppure la stringa non è di minimo 10 caratteri e massimo 20";
    exit;

    // poi filtro per il DB
    $testo_da_controllare filtraTesto($testo_da_controllare); 
    Ed il gioco è fatto.

    Ultimo consiglio: se siete un minimo esperti di attacchi hacking, vi consiglio di fare tutta una serie di test per capire se in qualche modo, queste funzioni presentano falle.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.