Back to top

Autore Topic: Login su db  (Letto 2829 volte)

Offline ventoevela

  • Nuovo arrivato
  • *
  • Post: 29
    • Mostra profilo
Login su db
« il: 14 Nov 2006, 11:56:02 »
Salve ragazzi vorrei fare il login con alcune pagine di un script da me realizzato usando utenti e password del db di joomla sapreste darmi qualche indicazione su come collegarmi?

Offline gallus

  • Abituale
  • ****
  • Post: 1771
  • Sesso: Maschio
  • Gens Joomla
    • Mostra profilo
Re: Login su db
« Risposta #1 il: 14 Nov 2006, 12:42:05 »
Come collegarti al db o come collegarti a Joomla?

I dati degli utenti sono inseriti in un all'interno di una tabella di un db MySQL e la password è cifrata con un oneway MD5.

La tabella dove trovi info sugli utenti è jos_users (jos_ è il prefisso che potrebbe essere però diverso a seconda dell'installazione che ti interessa)

Comunque con phpMyAdmin hai modo di dare un occhio completamente alla struttura del db.
Esperto in:
"Algoritmi concorrenti per la gestione del Gelato che si scioglie"
 TGGS - Team Gestione Gelato che si Scioglie.  Joomla! è un lavoro di squadra: tu mettici il problema, Gens Joomla la soluzione.  Gens Joomla, il sito di riferimento per Joomla: http://www.gensjoomla.org

Offline ventoevela

  • Nuovo arrivato
  • *
  • Post: 29
    • Mostra profilo
Re: Login su db
« Risposta #2 il: 14 Nov 2006, 14:57:54 »
ti ringrazio delle info e dell'attenzione....forse in realtà potrei essere più preciso, io con il mio vecchio db mi collegavo in questo modo:
   if ($_GET['op'] == "login") {
      
      echo "<LoginResult>";
      
      $tabella = $table_clienti;
      $get_nomeutente = urldecode($_GET['username']);
      $get_password = urldecode($_GET['password']);
      
      connessione_db ($db_host, $db_user, $db_password, $db_database);
      $db_query = "SELECT * FROM $tabella WHERE NomeUtente = '$get_nomeutente';";
         $res = @mysql_query($db_query, $_SESSION['db_connessione'])or die( "Errore: " . mysql_error() );
      if (mysql_num_rows($res) == 0) {
         echo "<Exists>false</Exists>";




mentre ora appunto anche per li problema delle pass in md5 come dovrei fare?

Offline gallus

  • Abituale
  • ****
  • Post: 1771
  • Sesso: Maschio
  • Gens Joomla
    • Mostra profilo
Re: Login su db
« Risposta #3 il: 14 Nov 2006, 15:49:46 »
Penso che dovresti partire da qui:
http://it.php.net/manual/it/function.md5.php

Non mi convince molto la scelta del metodo GET per il passaggio di dati sensibili
Esperto in:
"Algoritmi concorrenti per la gestione del Gelato che si scioglie"
 TGGS - Team Gestione Gelato che si Scioglie.  Joomla! è un lavoro di squadra: tu mettici il problema, Gens Joomla la soluzione.  Gens Joomla, il sito di riferimento per Joomla: http://www.gensjoomla.org

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Login su db
« Risposta #4 il: 14 Nov 2006, 15:57:29 »
ti ringrazio delle info e dell'attenzione....forse in realtà potrei essere più preciso, io con il mio vecchio db mi collegavo in questo modo:
   if ($_GET['op'] == "login") {
      
      echo "<LoginResult>";
      
      $tabella = $table_clienti;
      $get_nomeutente = urldecode($_GET['username']);
      $get_password = urldecode($_GET['password']);
      
      connessione_db ($db_host, $db_user, $db_password, $db_database);
      $db_query = "SELECT * FROM $tabella WHERE NomeUtente = '$get_nomeutente';";
         $res = @mysql_query($db_query, $_SESSION['db_connessione'])or die( "Errore: " . mysql_error() );
      if (mysql_num_rows($res) == 0) {
         echo "<Exists>false</Exists>";

Tu l'SQL injection non sai nemmeno cos'è? Vero? :-\

Tralasciando il fatto che il tuo codice di login è terribile, per fare quello che dici ti basta accedere alla tabella utenti di Joomla e poi procedere come hai sempre fatto.

$db_query = "SELECT * FROM jos_users WHERE username='$get_nomeutente' AND password='" . md5($get_password) . "'";


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline gallus

  • Abituale
  • ****
  • Post: 1771
  • Sesso: Maschio
  • Gens Joomla
    • Mostra profilo
Re: Login su db
« Risposta #5 il: 14 Nov 2006, 16:01:06 »

Tu l'SQL injection non sai nemmeno cos'è? Vero? :-\


Cosa serve saperlo se magari passi le password in chiaro? :)
Esperto in:
"Algoritmi concorrenti per la gestione del Gelato che si scioglie"
 TGGS - Team Gestione Gelato che si Scioglie.  Joomla! è un lavoro di squadra: tu mettici il problema, Gens Joomla la soluzione.  Gens Joomla, il sito di riferimento per Joomla: http://www.gensjoomla.org

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Login su db
« Risposta #6 il: 14 Nov 2006, 16:05:23 »
Cosa serve saperlo se magari passi le password in chiaro? :)

La password in chiaro viene trasmessa dal tuo pc, quindi è recuperabile solo dalla cache del tuo pc.
Ma se la gestione del login non è protetta, si può entrare lo stesso senza bisogno di sapere alcuna password.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline ventoevela

  • Nuovo arrivato
  • *
  • Post: 29
    • Mostra profilo
Re: Login su db
« Risposta #7 il: 14 Nov 2006, 16:12:41 »
quindi a prescindere dallo schifoso codice...in quanto di meglio non so fare, andrebbe bene cosi per fare il login?...cambiando il prefisso della tabella ovviamente con quella _users di Jommla:

   if ($_GET['op'] == "login") {
      
      echo "<LoginResult>";
      
      $tabella = $table_clienti;
      $get_nomeutente = urldecode($_GET['username']);
      $get_password = urldecode($_GET['password']);
      
      connessione_db ($db_host, $db_user, $db_password, $db_database);
      $db_query = "SELECT * FROM jos_users WHERE username='$get_nomeutente' AND password='" . md5($get_password) . "'";
         $res = @mysql_query($db_query, $_SESSION['db_connessione'])or die( "Errore: " . mysql_error() );
      if (mysql_num_rows($res) == 0) {
         echo "<Exists>false</Exists>";

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Login su db
« Risposta #8 il: 14 Nov 2006, 16:19:15 »
Sì, ma magari fai:

if (mysql_num_rows($res) != 1) {
    echo "<Exists>false</Exists>";


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline ventoevela

  • Nuovo arrivato
  • *
  • Post: 29
    • Mostra profilo
Re: Login su db
« Risposta #9 il: 14 Nov 2006, 16:48:03 »
ma quale è la differenza con: if (mysql_num_rows($res) == 0) {
sarebbe meglio che mi dai qualche spiegazione...altrimenti quando imparo!!!

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: Login su db
« Risposta #10 il: 14 Nov 2006, 16:53:51 »
ma quale è la differenza con: if (mysql_num_rows($res) == 0) {
sarebbe meglio che mi dai qualche spiegazione...altrimenti quando imparo!!!

Tu stai verificando la correttezza dei dati di login, nonchè l'esistenza del relativo utente.
La coppia (username, password) identifica in maniera univoca un singolo utente.
Pertanto se i dati sono corretti DEVE essere restituito un solo record, e l'unica condizione giusta è che sia proprio un solo record.
Se tu testi == 0, implichi che un numero di record superiore ad 1 sia corretto come risultato della query, quindi dai spazio agli attacchi.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline ventoevela

  • Nuovo arrivato
  • *
  • Post: 29
    • Mostra profilo
Re: Login su db
« Risposta #11 il: 14 Nov 2006, 17:13:26 »
ok grazie..ora faccio delle prove per vedere se riesco finalmente ad autenticarmi...ci sentiamo presto...ciaoo!!!

 



Web Design Bolzano Kreatif