• User Attivo

    Sicurezza dati inviati tramite web form

    Ciao a tutti !!! Da pochissimo sto studiando come implementare misure di sicurezza per filtrare e rendere sicuri i dati provenienti da form. Pertanto, data la mia inesperienza, chiedo scusa anticipatamente se utilizzo un linguaggio errato o faccio domande banali 😊.

    Cercando un po' sul web ho letto di varie tecniche che vengono utilizzate per violare la sicurezza dei siti e dei database; in particolare ho letto di SQL injection, XSS, Hijacking. Tuttavia, se creo un form che ha l'unico obiettivo di permettere agli utenti di inserire dati che poi verranno inseriti in un database MySQL in modo tale che io, accedendo al database, possa leggere i dati inviati, non mi espongo a nessun particolare attacco, giusto? L'unica precauzione che dovrei prendere sarebbe quella di utilizzare l'https per difendermi dal Sidejacking(?), è corretto? A vostro parere l'utilizzo dell'https è una misura necessaria o è esagerata per un piccolo sito (i dati inviati contengono l'esposizione di una situazione personale ai fini dell'ottenimento di una consulenza legale online)?

    Grazie 🙂


  • Super User

    non mi espongo a nessun particolare attacco, giusto?
    Falso. Devi sempre trattare in modo "pesante" i dati che ti arrivano dai form che hai sul tuo sito web. Basta un controllo in meno oppure una "conversione" non fatta ed un utente esterno ti puo' fare danni. Il mio consiglio è quello di non iniziare a ricostruire la ruota, ma prendi ed utilizza uno dei tanti ottimi Framework, come Zend Framework o Symfony che hanno gia' molte precauzioni attive.

    M.


  • User Attivo

    Grazie ziobudda per la risposta 🙂 ! Inizierò sicuramente a dare un'occhiata ai framework da te consigliati. Tuttavia, per caso mi sapresti dire, nello specifico, quali rischi potrei correre nel caso non riuscissi a filtrare in maniera del tutto sicura i dati, tenendo presente il fatto che questi dati verrebbero semplicemente inseriti in un database MySQL attraverso una query del tipo INSERT INTO tabella(colonna1,colonna2,colonna3) VALUES (val1,val2,val3) senza poi essere più recuperati tramite PHP?


  • User Attivo

    Io userei htmlspecialchars e un captcha se il form è esposto. Valida i dati in ingresso, se ti aspetti un numero controlla che sia un numero, se è una stringa controlla la lunghezza massima , etc così dovresti essere piu che apposto.


  • User Attivo

    Ciao erise e grazie per la risposta! In effetti è quello che pensavo di fare 🙂 ! Validare i dati con regular expression, filtrarli con mysql_real_escape_string() (secondo te è meglio htmlspecialchars()?) e utilizzare un captcha per lo spam!


  • User Attivo

    Sono due cose diverse, quello che dici tu usalo X l'inserimento nel db. Mi raccomando poi il charset , deve essere uniformato fra db e pagina web (se prevedi di utilizzare piu lingue porta tutto in utf8). Cmq le funzioni servono entrambe, controlla php.net