Joomla.it Forum
Non solo Joomla... => Sicurezza => : exploit00 31 May 2013, 21:45:56
-
Come da titolo. Vorrei vietare l'inserimento di caratteri ASCII e altri simboli nel form di registrazione e nel form di LOGIN. Questo per impedire che alcuni utenti registrino NICK apparentemente uguali.
Come fare?
Grazie!
-
e che ci inserisci.. segnali di fumo?
-
mbè ad es. è possibile registrare due nick UGUALI..magari utilizzando una O diversa...e quindi l' username apparentemente sembra uguale.
-
...si ma non capisco che cosa inseriresti come username ammettendo di riuscire a fare ciò che vuoi
-
ad es. l' username "Joomla" e "Jοοmla" sembrano uguali. Ma sono entrambi registrabili e riconosciuti diversamente. Perchè nel secondo USERNAME ho utilizzate delle "o" diverse.
O potrei usare " " che è un carattere vuoto.
In poche parole non voglio che vengano accettati i caratteri speciali.
-
qual'è il carattere speciale?
-
se vai QUI (http://isaac87.wordpress.com/2006/10/19/lettere-simboli-e-numeri-ascii/)per es. TROVI TANTISSIMI caratteri.
Se vai nella mappa dei caratteri di windows. Trovi anche tanti altri caratteri, tra cui dei caratteri vuoti che il FORM di login riconosce. O ad es. ad inserire i cuoricini.
-
Se vedi bene nel link..per farti un es. delle O ci sn due o che sembrano uguali, ma il login le riconosce diversamente. Infatti sn riuscito a registrare due nick che apparentemente sono identici.
-
Ecco ho registrato un nick UGUALE! ho risposto con questo ora. Te ne accorgi dai POST.
E' proprio questo che vorrei evitare nel mio login :'(
Sennò che protezione sarebbe?? Come tutelo i miei visitatori?
-
mi correggo, scusami... non avevo capito cosa dicevi, credevo il problema fosse o minuscola piuttosto che 0..
:) eh si è un bug questo, anzi direi proprio una vulnerabilità
devi mettere una regex a validare ... dopo ci guardo
-
...ma dove ti succede questo? con joomla? che versione? che autenticazione?
-
Ecco ho registrato un nick UGUALE! ho risposto con questo ora. Te ne accorgi dai POST.
E' proprio questo che vorrei evitare nel mio login :'(
Sennò che protezione sarebbe?? Come tutelo i miei visitatori?
Ciao explοit00, grazie per la segnalazione.
Fai però attenzione che l'utente uguale che hai registrato qui non lo hai registrato su Joomla ma su l'applicazione del forum che è SFM 2.0.4
Hai verificato se anche sulla versione 3.1.1 di Joomla avviene lo stesso comportamento e se è già stato aperto un tracker sul Joomlacode?
-
Ho provato sulla 3.1.1 ed effettivamente è come dice exploit00,
ho provato a registrare due utenti con nome alex e login alex cambiando solo la "e" copiandone una uguale presa dalla pagina segnalata ed mi ha registrato i due utenti identici.
Però penso sia difficile riuscire ad impedire questo comportamento, essendo caratteri si "speciali" ma in uso è complicato impedirne l'utilizzo, magari poi si rischia di andare poi a intaccare l'utilizzo di chi utilizza alfabeti differenti tipo l'arabo o il russo ecc...
Credo che per tutelare i tuoi utenti puoi temporaneamente attivare l'attivazione delle registrazioni da "Amministratore" così sarai tu a attivare le registrazioni dopo aver verificato che non siano effettivamente doppioni o spam.
-
...per curiosità ho provato anche a registrare un nuovo utente admin ma in questo caso Joomla non si è fatto ingannare come per l'utente alex
-
Non è possibile utilizzare le funzioni addslashes() - htmlspecialchars o ctype_digit()
-
a me Joomla la 3.1.1 non lo fa .... li controlla tutti gli inserimenti oppure ho avuto fortuna con quei 3 o 4 che ho provato.
Il guaio può succedere se qualcosa viene restituito per user name e nel db vengono salvati uguali e non con i caratteri speciali....
-
Ti allego la schermatina del phpmyadmin dove i due alex appaiono uguali uguali
[allegato eliminato automaticamente dopo un anno]
-
che rappresentazione html usi per la seconda "a"? o cmq che char inserisci?
In che modo registri? ovvero dal form di registrazione o dall'amministrazione-> nuovo utente? ... hai provato se avviene la stessa cosa?
-
la seconda "e" la copio incollo dalla pagina html segnalata prima.
Le registrazioni le ho fatte da amministrazione-> nuovo utente
non ho provato a farle da frontend
-
..mmhh no a me restituisce utente esistente registrando i due alex su 3.1.1
Sicuramente è legato al problema della codifica ma non vedo issues segnalate...
ma non capisco in quella pag cosa copi... ovvero io non vedo problemi vedo le lettere codificate e se copio copio la lettera così come restituita a schermo.
Potrebbe essere legato anche al SO in uso...
-
Scusate una domanda. E se io il form di registrazione lo creassi io (personalizzandolo a modo io) ad es. usando le funzioni citate prima (es.che accetti solo caratteri dalla a-z e numeri 0-9). Ovviamente i dati devono essere salvati nelle stessa tabelle. Potrebbe andare? o posso c' è la possibilità di compromettere il funzionamento di qualche altro modulo?
-
lascia perdere i pasticci ... bisogna capire prima di scegliere soluzioni.
Il problema del transliterate e delle codifiche dei caratteri non è nuovo solo che non mi è mai successo con joomla (e il bello è che ancora non mi succede).
Bisogna capire se può dipendere dal setup, magari dalla lingua, dalla codifica, dal sistema operativo...
Joomla ha già la funzione transliterate in: /libraries/joomla/language/transliterate.php
che però sembra adibita ai soli alias
sempre nella libreria però c'è la /table/user.php
if (preg_match("#[<>\"'%;()&]#i", $this->username) || strlen(utf8_decode($this->username)) < 2)
..interessante...
http://it.wikipedia.org/wiki/UTF-8
Forme lunghe, input non valido e considerazioni di sicurezza
Il comportamento di un decoder in presenza di input non valido è pressoché indefinito. Ci sono molti modi in cui un decoder può reagire alla presenza di input non valido...
... UTF-8 è pensato in modo che nessuno dei byte codificati possa assumere uno dei valori speciali del codice ASCII...
..e un bel paper:
http://www.w2spconf.com/2012/papers/w2sp12-final7.pdf
... a qs punto mi viene una domanda... ma il db è utf-8? ... e la pagina?
-
Vorrei almeno evitare di inserire i caratteri * o @ nel campo username.
/libraries/joomla/language/table/user a me non esiste (joomla 2.5)
anche # mi registra.
-
potresti modificare il bind della libreria... /libraries/joomla/user/user.php...
in questo punto:
// Check that username is not greater than 150 characters
$username = $this->get('username');
if (strlen($username) > 150)
{
$username = substr($username, 0, 150);
$this->set('username', $username);
}
..ma non ho verificato se è corretto farlo quì
-
Con immenso piacere, vi annuncio che ho risolto il problema alla grande. Ho utilizzato "Community Builder" che ovviamente è un componente FREE.
Utilizzando il FORM di registrazione di cb, oltre ad effettuare il controllo in tempo reale sul db se un user o un email è disponibile o meno, è possibile anche personalizzare ogni campo, come ad. il campo USERNAME. Ora qualsiasi altro carattere inserisco, mi da errore "CARATTERE NON VALIDO".
Addio cloni.
Vi spiego passo passo.
Installate community builder, andate su "Field Management", clicca su username e a destra su "Ingresso consentito", selezionate "singola a-z ec.. ec....". E automaticamente tutti gli altri caratteri inseriti nel CAMPO username verranno BLOCCATI. Lo stesso è possibile fare con gli altri CAMPI del form. Inoltre è possibile impostare manualmente i caratteri o nomi utenti non consentiti. ;D ;D
P.S: Ovviamente il form di reg di CB, insieme al modulo del login e del recupero pass è possibile integrarlo per il forum SMF e KUNENA.