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

    Creare campo password criptato su db MySQL

    Come da titolo, vi chiedo, per favore, come é possibile creare un campo che non sia un semplice campo testuale, che possa memorizzare una password criptata.

    Non conosco proprio la sintassi che bisogna usare per la creazione di un campo del genere.

    Ho creato una pagina di Login nella quale l'utente inserirà nome e password, in seguito, uno script php controllerà se nel db, in una tabella apposita, vi saranno nome e password corrispondenti, in caso affermativo, l'utente potrà accedere al programma, diversamente no..

    Grazie mille per l'aiuto

  2. #2
    googlando l'argomento sul web ho scoperto che per inserire una password criptata basta usare un comando del genere:

    $password = sha1($password);

    quello che non capisco é se il campo nel db deve essere un semplice campo txt o deve essere di un tipo particolare..

    e siccome il comando sopra riportato é per il PHP, lato MYSQL come si risolve?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da timberwolf
    googlando l'argomento sul web ho scoperto che per inserire una password criptata basta usare un comando del genere:

    $password = sha1($password);

    quello che non capisco é se il campo nel db deve essere un semplice campo txt o deve essere di un tipo particolare..

    e siccome il comando sopra riportato é per il PHP, lato MYSQL come si risolve?
    si tratta di una funzione hash che converte una stringa in una sequenza di caratteri (tipicamente esadecimali).

    ti basta un campo CHAR per contenerla.
    ---
    Lato "sicurezza" dovresti "salare" la password (aggiungendo in testa ed in coda alla stringa una sequenza di caratteri tipo DMN"@@1!;|)), e magari ripetere un migliaio di volte la codifica con un ciclo

    qualcosa tipo
    codice:=sha1('"DMNNWB"+password+"N22mx|à")

    for i:=1 to 1000
    codice:=sha1(codice)

    "salare" rende difficile usare le rainbowtable; il reiterare più volte rallenta gli attacchi brute force. Se poi vuoi fare anche meglio fondi due hash diversi

    for i:=1 to 1000
    codice:=sha1(md5(codice))

  4. #4
    oddio!, in realtà mi basta anche un semplice hash, in quanto il programma che ho fatto gira in locale su pc e non fa accesso alla rete esterna.. pensavo inoltre di creare una connessione https per ridurre ancora la possibilità di intercettazioni dall'esterno.

    Sempre googlando ho trovato questo esempio, puoi dirmi se é corretto? per favore?

    Codice PHP:
    INSERT INTO myUserTbl(UserNamePassword
    VALUES('myUserName'SHA1('myPassword')); 
    altra domanda, cosa sono le rainbow table?

  5. #5
    ok mi auto rispondo dicendoti che googlando (santo google) ho capito a cosa servono le rainbow tables :-) o almeno me ne sono fatto un'idea

    grazie ancora!

  6. #6
    scusami se ti tedio con le mie questioni ma vorrei approfondire l'argomento chiedendoti:

    deve essere per forza un campo char o può essere anche txt?, nel secondo caso é meglio in quanto la password può avere lunghezze superiori ai 256 caratteri? (0-255)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da timberwolf
    scusami se ti tedio con le mie questioni ma vorrei approfondire l'argomento chiedendoti:

    deve essere per forza un campo char o può essere anche txt?, nel secondo caso é meglio in quanto la password può avere lunghezze superiori ai 256 caratteri? (0-255)
    non c'è differenza tra un varchar e un text (fino a 64k), varchar (di mysql) arriva appunto a 64k, ma non ha i problemi dei campi blob di ordinamento, tabelle temporanee etc.
    ---
    gli hash delle password hanno una lunghezza fissa: 45 byte ad esempio per SHA1.
    ---
    se lavori in locale... ma che ti frega, memorizza la password in chiaro e buonanotte

  8. #8
    ok grazie mille

  9. #9
    ultima domanda giuro che poi ti lascio in pace, mi sfugge un passaggio per quanto riguarda invece la creazione o meglio l'inserimento di un nuovo utente nel db del mio programma..

    un utente, per usare mysql deve essere un utente registrato ed avere dei privilegi ?, esattamente come "root@localhost" oppure no?. Quando in fase di registrazione faccio inserire i dati tramite un form e memorizzo i dati in una tabella chiamata utenti (con password criptata), dove c'e' nome, cognome etc etc.., anch'esso deve essere un utente tipo root e quindi assegnare dei privilegi oppure non me ne può fregare di meno? e basta che user e pass combacino? In questo modo se user e pass combaciano, recupero l'id utente che memorizzo in una variabile, magari usando le sessioni e poi mi porto in giro quella variabile per estrapolare i dati corrispondenti dal mio db?

    io credo la seconda ipotesi, ma correggimi se sbaglio

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da timberwolf
    ultima domanda giuro che poi ti lascio in pace, mi sfugge un passaggio per quanto riguarda invece la creazione o meglio l'inserimento di un nuovo utente nel db del mio programma..

    un utente, per usare mysql deve essere un utente registrato ed avere dei privilegi ?, esattamente come "root@localhost" oppure no?. Quando in fase di registrazione faccio inserire i dati tramite un form e memorizzo i dati in una tabella chiamata utenti (con password criptata), dove c'e' nome, cognome etc etc.., anch'esso deve essere un utente tipo root e quindi assegnare dei privilegi oppure non me ne può fregare di meno? e basta che user e pass combacino? In questo modo se user e pass combaciano, recupero l'id utente che memorizzo in una variabile, magari usando le sessioni e poi mi porto in giro quella variabile per estrapolare i dati corrispondenti dal mio db?

    io credo la seconda ipotesi, ma correggimi se sbaglio
    dipende. in generale la seconda che hai messo.

    Ossia l'applicazione php ha un "suo" utente mysql (che so... utentephpmysql, o perfino root. ovviamente è consigliabile creare un utente ad hoc, principalmente per poterli discriminare con process list), mentre gli utenti registrati non sono altro che entità gestite dall'applicazione.

    E' raro avere una mappa utente mysql<>utentephp (veramente raro).

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.