Un sistema di login in Javascript ed Xml

Corso XML
Creazione di strutture XML, XSL ed altri linguaggi eXtensible

Scritto da Luca Ruggiero nella sezione Xml

Concesso in esclusiva a MrWebmaster.it - E' vietata la pubblicazione senza espresso consenso del proprietario

Con un po di fantasia e con l'oggetto XMLDOM possiamo creare una serie di interessanti applicazioni basate su XML.

L'oggetto di questo Articolo è un sistema di autenticazione, o che dir si voglia di login, basato su un file XML di cui presento la struttura, contenuta all'interno del file login.xml

<?xml version="1.0"?>

<database>
    <utente>
        <id>1</id>
        <password>pippo</password>
    </utente>
    <utente>
        <id>2</id>
        <password>pluto</password>
    </utente>
    <utente>
        <id>3</id>
        <password>paperino</password>
    </utente>
</database>
La struttura esplica chiaramente che ad ogni utente è assegnata una coppia di valori UserID e Password, ovvero le credenziali di accesso.

Di seguito il codice HTML del modulo in cui inserire le proprie credenziali per l'autenticazione, contenuto nel file login.html
<form name="modulo">
    User ID:<br>
    <input type="text" name="u_id"><br>
    Password:<br>
    <input type="password" name="pass"><br>
    <input type="button" value="Login" onclick="XML_Login()">
</form>
L'evento click del bottone di login fa riferimento alla funzione XML_Login() da inserire nell'header dello stesso file.

Di seguito il codice commentato:
<script language="javascript">
<!--
function XML_Login()
{
    // Recupero i dati dal modulo HTML
    var u_id = document.modulo.u_id.value;
    var pass = document.modulo.pass.value;

    // Imposto un'espressione regolare per verificare che
    // i caratteri inseriti nei campi UserID e Password
    // siano alfanumerici, in modo da non dar fastidio all'XML
    var re = /^[a-z0-9]/;

    // Verifico che i campi siano valorizzati (correttamente)
    if (re.test(u_id) == false || re.test(pass) == false)
    {
        alert("Inserire le credenziali di accesso!");
    }
    else
    {
        // Una volta soddisfatte le condizioni...

        // Apro un oggetto XMLDOM
        var login = new ActiveXObject("Microsoft.XMLDOM");

        // Carico il file XML
        login.async = false;
        login.load("login.xml");

        // Recupero i nodi dal file XML
        var id = login.getElementsByTagName("utente/id");
        var password = login.getElementsByTagName("utente/password");

        // Creo un indice per individuare il nodo relativo
        // all'utente che sta effettuando il login
        var indice = u_id - 1;

        // Verifico che l'utente esista e gli concedo o meno l'accesso
        if (id[indice].text == u_id && password[indice].text == pass)
        {
            alert("Benvenuto!");
        }
        else
        {
            alert("Accesso negato!");
        }
    }
}
//-->
</script>
Non è tutto oro quel che luccica!

Il sistema è semplice e funzionante e potrebbe risolvere i problemi di molti Webmaster che non utilizzano (o non ancora) linguaggi sicuri come ASP, ASP.NET o PHP.

Tuttavia ci sono due controindicazioni:
  1. utilizzare un file XML che contenga dati sensibili come delle credenziali di accesso non è una scelta sicura perchè ci si potrebbe arrivare via HTTP, conoscendo o immaginando come potrebbe chiamarsi il file;
  2. utilizzare Javascript lato client mette in chiaro nel codice il nome ed il percorso del file XML contenente le credenziali di accesso dei vari utenti.
Con queste considerazioni non sto smontando i lettori in merito all'utilizzo di questo sistema, anche perchè altrimenti non ci avrei scritto un Articolo!

I più cliccati della sezione Xml

:: Estrarre dati da un file Xml con Javascript (32.755)

:: Un motore di ricerca con Xml e Javascript (25.675)

:: Applicare un foglio di stile Xsl ad un file Xml (21.760)

:: Leggere un file Xml con l'oggetto XMLDOM (17.988)

:: Introduzione all'oggetto XMLHTTP (16.744)

:: Scorrere i record di un file Xml con Javascript (14.254)

:: Leggere un Feed RSS con PHP (14.247)

:: Leggere un file Xml con Php (12.728)

:: Inserire dati in un file Xml con l'oggetto XMLDOM (10.805)

:: Applicare un foglio di stile Css ad un file Xml (10.529)

IN EVIDENZA
DOWNLOAD