Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    19

    Come proteggere il DB e i suoi dati

    Ciao a tutti, sono un neofita del PHP e volevo domandare una cosa a voi che siete molto più esperti. Siccome sto lavorando ad un progetto che prevederà la costruzione di un DB che andrà sfruttato per fini "sociali" all'interno di una scuola mi chiedevo come potessi proteggere il database dall'accesso di persone non comuni e con conoscenze più estese nella programmazione.

    Per prima cosa vorrei chiedervi come devo comportarmi quando uno studente salva la propria password all'interno dello specifico form: essa è una semplice stringa di caratteri che viene 'nascosta' con gli asterischi ma rimane comunque in chiaro in fase di spedizione e soprattutto all'interno del DB. Come la codifico per renderla illeggibile agli altri? Ma soprattutto devo codificarla?

    Per favore se poteste essere così gentili da elencarmi i passaggi che devo seguire in merito alla messa in sicurezza di un DB atto a svolgere il compito che ho espresso prima e ancor meglio i possibili rischi a cui vado in contro gliene sarei grato.

    Grazie mille.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Innanzitutto all'interno del db ci puo accedere solo chi conosce le credenziali di accesso di esso

    Poi non vedo il problema, l'unica cosa che ti consiglio cosi per evitare sql-inject
    e criptarla allo stesso tempo e di criptarla in md5 cosi da generare
    una stringa alfanumerica di 32 caratteri

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    19
    Originariamente inviato da RoTeam
    Poi non vedo il problema, l'unica cosa che ti consiglio cosi per evitare sql-inject
    e criptarla allo stesso tempo e di criptarla in md5 cosi da generare
    una stringa alfanumerica di 32 caratteri
    Conoscendo l'SQL ma essendo ancora insulso a livello di PHP ciò che mi hai detto si traduce in cosa? Non ho idea di cosa sia 'md5', potresti spiegarmelo?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da T.Stark
    Conoscendo l'SQL ma essendo ancora insulso a livello di PHP ciò che mi hai detto si traduce in cosa? Non ho idea di cosa sia 'md5', potresti spiegarmelo?
    L'md5 è un algoritmo che serve a generare stringhe alfanumeriche di 32 caratteri
    diverse da ogni parola e indecriptabili se no con il metodo brute force ( a tentativi di confronto)

    In php è riassumibile con md5()

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    19
    Ho letto sul manuale che mi hai gentilmente fornito nell'altro post cosa è l'SQL injection e mi chiedevo (a parte proteggere la password utente con l'md5) come poter proteggere il DB da attacchi del genere che, si spera, non avverranno mai ma se dovessero esserci?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Devi proteggere tutte le variabili con cui puo interagire un utente, e che utilizzi
    nelle query, quindi di tipo get,post,cookie... per proteggerle ci sono funzioni tipo
    mysql_real_escape_string, oppure addslashes() e simili

    Ps: scusa se sono stato un po scontroso ma è piuttosto facile trovare la documentazione ufficiale

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    19
    un DB che andrà sfruttato per fini "sociali" all'interno di una scuola mi chiedevo come potessi proteggere il database dall'accesso di persone non comuni e con conoscenze più estese nella programmazione. [...] Per favore se poteste essere così gentili da elencarmi i passaggi che devo seguire in merito alla messa in sicurezza di un DB atto a svolgere il compito che ho espresso prima e ancor meglio i possibili rischi a cui vado in contro gliene sarei grato.
    Devi proteggere tutte le variabili con cui puo interagire un utente, e che utilizzi
    nelle query, quindi di tipo get,post,cookie... per proteggerle ci sono funzioni tipo
    mysql_real_escape_string, oppure addslashes() e simili
    Mi dispiace dovermi ripetere ma posso chiederti degli esempi concreti?
    Veramente... so come orientarmi all'interno dell'SQL e del PHP ma essendo nuovo queste cose avanzate non le conosco; dato che devo fare questo lavoro vorrei sapere cosa devo fare per filo e per segno: se non hai tempo o non hai voglia o per qualsiasi altro motivo sei di fretta riesci a dirmi cortesemente "vai a vederti questo, questo e quest'altro. Buona programmazione!".
    Almeno so cosa dover cercare su google

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da T.Stark
    Mi dispiace dovermi ripetere ma posso chiederti degli esempi concreti?
    Veramente... so come orientarmi all'interno dell'SQL e del PHP ma essendo nuovo queste cose avanzate non le conosco; dato che devo fare questo lavoro vorrei sapere cosa devo fare per filo e per segno: se non hai tempo o non hai voglia o per qualsiasi altro motivo sei di fretta riesci a dirmi cortesemente "vai a vederti questo, questo e quest'altro. Buona programmazione!".
    Almeno so cosa dover cercare su google
    Ti faccio un piccolo esempio


    Tu hai questo url:

    /index.php?id=10

    Metti che l'id sia l'id dell'utente che devi stampare perciò la query sarà cosi:

    Codice PHP:

    mysql_query
    ("SELECT * FROM utenti WHERE id =".$_GET['id']); 
    Ora senza nessuna protezione, se si aggiungono degli apostrofi da un errore
    di sintassi, e da qui attraverso alcuni exploit ad esempio si puo ricavare
    anche l'intero database, per proteggerlo basta semplicemente una di quelle funzioni:

    Codice PHP:

    mysql_query
    ("SELECT * FROM utenti WHERE id =".mysql_real_escape_string($_GET['id']));

    //essendo di valore int ciò che ti serve, in questo caso basterebbe fare cosi

    (int)$_GET['id']

    //al posto della funzione 
    Questo vale anche per le variabili post (dei form), dei cookie ed altre, insomma qualunque
    variabile che un utente puo modificare ed entra a contatto con le query


    Comunque non ha molto senso studiarsi gia la sicurezza quando ancora si devono
    capire le basi del php

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    19
    Comunque non ha molto senso studiarsi gia la sicurezza quando ancora si devono
    capire le basi del php [/QUOTE]

    Grazie per il consiglio, lo terrò a mente.
    Ascolta, non ho davvero voglia di intrattenere un botta e risposta solo con te: se ti vuoi limitare a rispondere alle risposte degli utenti bene, se invece vuoi inveire sulla mia ignoranza è ben diverso.

    L'esempio che mi hai fornito mi è utile, mi ha fatto capire che si potrebbe accedere all'intero DB così semplicemente anche da una query normalissima. Tralasciando che sui form ho posto dei controlli accurati sul formato e il contenuto di essi mi chiedo: se il malintenzionato non conosce i dati d'accesso al db come può eseguire delle query su di esso?

    Comunque mi basta sfruttare questa funzione per tutte le variabili che, come dici, vengono a contatto con l'utente o c'è dell'altro che dovrei sapere?
    Più cose mi indichi e prima mi posso informare, se invece devo strapparti le risposte di bocca ad ogni post andiamo avanti di +1 all'infinito.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453

    Grazie per il consiglio, lo terrò a mente.
    Ascolta, non ho davvero voglia di intrattenere un botta e risposta solo con te: se ti vuoi limitare a rispondere alle risposte degli utenti bene, se invece vuoi inveire sulla mia ignoranza è ben diverso.

    L'esempio che mi hai fornito mi è utile, mi ha fatto capire che si potrebbe accedere all'intero DB così semplicemente anche da una query normalissima. Tralasciando che sui form ho posto dei controlli accurati sul formato e il contenuto di essi mi chiedo: se il malintenzionato non conosce i dati d'accesso al db come può eseguire delle query su di esso?

    Comunque mi basta sfruttare questa funzione per tutte le variabili che, come dici, vengono a contatto con l'utente o c'è dell'altro che dovrei sapere?
    Più cose mi indichi e prima mi posso informare, se invece devo strapparti le risposte di bocca ad ogni post andiamo avanti di +1 all'infinito.
    Guarda che non si tratta di infierire si tratta di studiare e poi migliorare, non si puo
    fare una cosa se non si conoscono le basi, io ad esempio stavo iniziando il java da poco
    ma non mi metto di certo a fare giochi 3D con utilizzo di vettori o altro.

    Il malintenzionato puo eseguire le query con l'interruzione di una query in esecuzione
    aggiungendo ciò che vuole, questo è il pericolo.

    Ovviamente ti basta organizzarti le variabili e tutto, comunque si usa quella
    se non è un campo numerico da proteggere sennò fai come nel secondo esempio
    se int o float o altri valori numerici fai prima.

    Ps: ti ricordo che mysql_real_escape_string funziona solo se esiste una connessione sql
    attiva, poi ti consiglio di mettere la codifica del database in UTF-8

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.