Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [MySQL] sicurezza

    Salve ragazzi, ho appena inserito in un sito web un form di registrazione e di autenticazione (username e password).
    Adesso mi chiedo cosa fare per rendere l'autenticazione "sicura", ho letto che è necessario controllare che nn vengano inseriti nei campi username-password opportuni caratteri o intere stringhe di SQL (per esempio di cancellazione di un intera tabella)...

    Per adesso ho controllato che alcuni caratteri tipo ' / ; non vengano inseriti, ho poi memorizzato l'hash delle password,
    MI CHIEDO COSA ALTRO POSSO FARE PER RENDERLO VERAMENTE SICURO ???

    (Il database utilizzato è MySQL e il linguaggio è java).

    Grazie

  2. #2
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    Tempo fa avevo letto questo articolo, che parla di SQL Injection. Si parla di PHP ma il concetto è sempre lo stesso, quale che sia il linguaggio o il database che usi, basta leggerlo con un po' di criterio.

    Per adesso ho controllato che alcuni caratteri tipo ' / ; non vengano inseriti
    Questo non è il modo migliore per risolvere il problema, quello che andrebbe fatto è il contrario di quello che hai fatto tu. Cerco di spiegarmi meglio che posso, quando bisogna validare dei dati di qualsiasi genere è buona norma stabilire come i dati devono essere fatti e non come non devono esserlo, nel tuo caso non devi controllare che non contengano apici, slash o punti e virgola, devi piuttosto controllare che contengano solo, per esempio, caratteri alfanumerici o comunque caratteri che si possano considerare "sicuri". Così facendo elimini il rischio di dimenticarti, o non pensare, a qualcosa che invece potrebbe essere potenzialmente dannoso.

  3. #3
    ho definito che il campo password sia composto da caratteri alfanumerici e caratteri di interpunzione, devo eliminare i caratteri di interpunzione??

  4. #4
    Ragazzi mi consigliate di eliminare la possibilità di scegliere caratteri di interpunzione nella password, oppure posso lasciare questi caratteri e inserire opportuni controlli?

  5. #5
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    Beh... questa è una domanda un po' bastarda!

    Cioè, da un lato la tecnica migliore per risolvere problemi del genere è quella che ti spiegavo prima, per contro in una password è auspicabile che possano venire usati il maggior numero di caratteri possibili e quindi sarebbe certamente più semplice usare il metodo che usavi tu. In conclusione se vuoi una risposta, ma devi giurare che non la impugnerai mai in un tribunale, nel caso della password io farei uno strappo alla regola e controllorei che la password non contenga i caratteri "'" e ";", che sono quelli che potrebbero servire a una SQL Injection. Poi per parafrasare il saggio "è una questione di esperienza e buon gusto" e io ci aggiungerei anche un po' buon senso.

  6. #6
    ok, ti prometto che questa è l'ultima domanda,poi ti lascio libero...
    Hai detto di evitare il carattere di ";" ma io sto usando MySQL e nn ho ancora capito bene se con questo DBMS è possibile eseguire query multiple, perchè nel caso non fosse possibile potrei accettare il carattere ";"

  7. #7
    Originariamente inviato da gaetanoTwins
    ...nn ho ancora capito bene se con questo DBMS è possibile eseguire query multiple.....
    A leggere la seconda pagina dell'articol olinkato sopra si trova: "Ad esempio MySQL non supporta gli statement multipli"
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    infatti... si fa molto rumore per nulla su sta sql injection. E' vero, esiste, ma non è certo cos' banale l'exploit.
    Altro è se qualcuno, "furbescamente", manda le query in GET... allora lì c'è da chiedersi quanto pollo bisogna essere e se forse non sia il caso di cambiare mestiere (o in caso di improvvisazione, se non sia il caso di improvvisare in altri ambiti).

    Per il problema della password: la ricevi in post, ne salvi solo l'hash in database... e controlli l'hash, stringa esadecimale. Fine della fiera
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    la password e l'username vengono inviati da un applet a una servlet attraverso un canale HTTPS

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ok, quello che intendevo dire è questo:

    Invii la password, in modo sicuro o insicuro... la ricevi dall'altro lato (niente a che vedere con sql ancora), ne calcoli un hash (il più famoso ed usato, md5), confronti questo hash (che non ha caratteri di escape, essendo [0..9-a..e]) con la password in hash nel database (non si salvano password chiaro o criptate, a meno che la tua funzione di recupero password non preveda il recupero della vecchia password, quanto pittutosto il reset con nuovo valore): la query quindi non avrà caratteri di escape.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.