Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    33

    Impedire accessi multipli con uguali UN/PW

    Ciao,

    Stavo cercando di capire come impedire che gli utenti possano accedere ad un area privata utilizzando la stessa coppia user/password.
    Infatti ci siamo accorti che a seguito di un'unica registrazione la coppia un/pw è stata passata ad altri utenti che quindi accedono senza aver regolarizzato la registrazione.

    Ho provato flaggando un campo in una tabella al momento del login e, ad successivo un tentativo di login con la stessa un/pw respingere l'utente. Poi in fase di logout il flag viene rimosso e "sbloccato" il login.
    Oltre al logout, utilizzo l'evento javascript onUnload() per richiamare la procedura di rimozione del flag ma ho il problema che se cade la linea o l'utente si disconette senza (o prima di) chiudere il browser il flag rimane e nessuno riesce più a loggarsi.

    Utilizzando le session succede che il server con Session.gc_probability (quindi la garbage collection per la pulizia delle sessioni scadute) impostato ad 1 (non ho la possibilità di modificare ini del php sul server) la rimozione della sessione non più attiva può anche essere questione di molto tempo e, nel caso di tentativo di riconnessione, l'utente non potra quindi loggarsi.

    Qualcuno di voi ha mai affrontato (e risolto) la problematica degli accessi multipli e mi illumina in tal senso?

    Ciao, grazie e buon weekend

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    se il problema è l'accesso concorrente, puoi fare in modo che a ogni login venga cambiato semplicemente l'id di sessione, in questo modo chi ha fatto l'accesso per primo viene "sbattuto" fuori.

    Sarà quindi interesse dell'utente non passare il proprio login e password.

    Comunque non potrai mai essere sicuro che 2 utenti diversi accedano con la stessa coppia se non analizzando il traffico generato, e cercare di capire se una coppia di user e pass abbia un'attività fuori dal normale.

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    33
    ciao
    Comunque non potrai mai essere sicuro che 2 utenti diversi accedano con la stessa coppia se non analizzando il traffico generato
    intendi dire che non esiste la possibiltà di impedire l'accesso ad un utente se contemporaneamente ne esiste già uno loggato?

    Per quello che riguarda il controllo del traffico già lo faccio, ed è da quel controllo che ho notato le anomalie.. Però, vuoi per motivi di opportunità, vuoi per ragioni che non dipendono solo da me mi viene difficile telefonare ad un utente e dirgli che ha ceduto la password.

    Almeno in una prima fase, visto che per svariati motivi le connessioni sono tutte nello stesso lasso di tempo, vorrei creare dei "problemi" a chi tenta di connettersi con un/pw clonate..compreso il reale titolare dei requisiti. Questo per "educare" l'utente e costringerlo a cambiare password.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Il problema come lo hai affrontato secondo me è corretto, ma mostra la debolezza proprio nel momento in cui non viene scaturito l'evento onunload.

    Proprio per educare l'utente quello che ti ho proposto è un metodo che potrebbe funzionare.

    Nel momento in cui l'utente titolare dello username e password viene sbattuto fuori puoi mostrare un messaggio che spiega che i motivi possono essere dovuti ad un malfunzionamento e in tal caso mostri l'email per il supporto (ma tu sai che questo caso non si pone a meno che la password non sia stata effettivamente trafugata), oppure al fatto che qualcun'altro stia accedendo con lo stesso username e password (instillando il dubbio che forse cedere il proprio username e password non è una pratica corretta).

    Alternativamente potresti procedere come hai fatto fin'ora, pensando ad una procedura chiamata via cron che cancelli lo stato di loggato quando il file di sessione non esiste più (in fase di login memorizzi su db l'id di sessione, che ti permette di risalire al file dove vengono memorizzate appunto le sessioni).
    Questo però ti porterebbe necessariamente ad un periodo in cui l'utente non può loggarsi (ad esempio avviene una disconnessione, l'utente chiude il browser - quindi non ha più lo stesso id di sessione e quando si riconnette non può loggarsi finche la procedura non rilevi che il file di sessione non esiste più).

    Per il momento altre soluzioni non me ne vengono in mente.

    Ciao

  5. #5
    Utente di HTML.it L'avatar di zumo
    Registrato dal
    Jun 2002
    Messaggi
    141
    scusate volevo dire la mia e se si va a prendere l'IP di collegamento e si fa in modo che ci si possa connettere solo con quello? tipo qua :
    http://62.149.128.130/cgi-bin/sqwebmail?index=1

    credo che si possa fare....non so come però è un idea

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    è una limitazione, ma non risolve il problema.

    pensa ad una grossa lan con un unico ip/proxy.

    Tutti gli utenti che si connettono a internet da quella lan si presenteranno con lo stesso ip (ad esempio gli utenti fastweb).

    Inoltre se uno ha l'ip dinamico non puoi bloccarlo su un ip solo, perchè alla prossima connessione potrebbe averne uno diverso...

    ciao

  7. #7
    posso dire la mia soluzione idiota? aggiungi una colonna alla tabella del database in cui inserisci un dato al momento del login (un semplice 1 va bene) ed esegui un controllo al momento del login, se il dato è zero il primo utente entra, se è già stato portato a 1 il secondo utente si attacca al....

    Di conseguenza devi fare in modo che al momento dello scadere della sessione quel dato venga riportato a zero.

    Questa è una mia soluzione creata in 30 secondi, magari è sbagliata ma può essere sempre una soluzione

  8. #8
    allora devi gestire la sessione anche con il db nella tabella sessione devi avere id_user id_sessione ip last_action

    i primi tre si descrivono da solo...il quarto invece ci va il tempo dell'ultima azione così puoi dare anche una scadenza cioè se te da un limite di 5minuti e l'utente loggato nn fa nessuna operazione nel tuo sito cioè nn ci naviga nel momento in cui i 5 minuti sono superati e lui naviga nel sito si trova scollegato e dovrà rieffettuare l'accesso...poi con questa tabella nel login fai un controllo e vedi se username iserito per il login esiste nella tabella sessione ( se esiste fa un'altro controllo per l'ip per vedere se è uguale, se è uguale ok effettua l'accesso) se nn esiste effettua l'accesso altrimenti ( se esiste e anche l'ip nn è uguale) stampa il mess di errore che nn puo effettuare l'accesso...questo è la mia soluzione pensata in 10sec poi nn so se la trovi giusta

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.