FEU-Benutzername Case-Sensitive

Ideen für neue Funktionen in CONTENIDO?
Antworten
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

FEU-Benutzername Case-Sensitive

Beitrag von rethus » Fr 14. Mai 2010, 12:13

Hallo Leute,

aufgrund einer eigenen Anpassung (Eigene Verzeichnisse für FEU in der Dateiverwaltung, die case-Sensitive basiert arbeiten) ist mir aufgefallen, dass beim FEU-Login der Benutzername nicht Case-Sensitive sein muss - was ich in bestimmten Fällen für eine lockerung der Sicherheitsmaßnahmen halte... stellen doch Groß-KleinSchreibung in Benutzername und passwort weitere Zugriffshürden für Angreifer dar.

Wie denkt Ihr darüber, sollte dass nicht standard-mäßig mit rein, und nur optional über die Mandanteneinstellungen deaktiviert werden können?

Hat ggf. schon einer gefunden, wo der strtolower für die FEU-Eingaben durchgeführt wird?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

xmurrix
Beiträge: 3151
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: FEU-Benutzername Case-Sensitive

Beitrag von xmurrix » Fr 14. Mai 2010, 15:01

Hallo rethus,

die Groß-/Kleinschreibung wird auf DB-Ebene kontrolliert und vermutlich ist bei dir die Kollation der Tabelle mit *_ci am Ende, was dann bei einem SELECT die Groß-/Kleinschreibung ignoriert.

Während das Ignorieren der groß-/Kleinschreibung für die Suche ideal ist, ist das halt beim Login eventuell Problematisch.

Entweder man äbdert die Kollation der Usertabelle oder man passt die Query in der conlib/local.php an, z. B. mit einem "select binary". Vermutlich ist es besser, wenn man dies in der conlib/local.php macht, da nicht jeder User darauf achtet, die Kollation der Usertabelle umzustellen.

Lässt es Contenido eigentlich überhaupt zu, dass man einen User mit gleichen Usernamen aber mit unterschiedlicher Groß-/ Kleinschreibung anlegt?

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: FEU-Benutzername Case-Sensitive

Beitrag von Oldperl » Sa 15. Mai 2010, 08:15

Hallo rethus,
rethus hat geschrieben:...stellen doch Groß-KleinSchreibung in Benutzername und passwort weitere Zugriffshürden für Angreifer dar.
Beim Passwort stimme ich dir zu, beim Username muß ich widersprechen.
Der Usernname sollte, egal ob groß oder klein geschrieben, einmalig sein, das erhöht die Sicherheit. Damit gibt es dann nur wirklich einen User mit gleichlautendem Namen im System. Beachten man die Schreibweise nicht, könnte es auch mehrer User mit gleichem Namen aber unterschiedlicher Schreibweise geben (nicht gut!)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: FEU-Benutzername Case-Sensitive

Beitrag von rethus » Mo 17. Mai 2010, 08:43

danke für eure Meldungen, aber ich denke, man sollte das eine tun, aber das andere nicht lassen:

@oldpearl:
Der User name kann Case-Sensitiv sein, sollte aber nur einmal vorkommen.
Ist ja absolut kein Ding, beim anlegen eines neuen Usernamens alle bestehenden auszulesen, tolowercase() zu machen, zu prüfen ob eingegebener name (tolowercase) schon existiert, und falls nicht vorhanden dann "Case-Sensitive" in die Datenbank zu schreiben.

So hat man keine Dubletten, aber einen Step bessere Password-Verifizierung.

@xmurrix.

Dein Tipp war Gold-Richtig.
In der DB steht es zwar Case-Sensitiv, aber die Select-Anweisung fragt an der Stelle nicht nach groß und Kleinschreibung.
Heißt,: gibt es ein FEU "TesT" und ich "Selecte" nach "test", findet der "TesT" auch.

Ich habe daher in der loacl.php folgende minimale Anpassung gemacht, womit Contenido ohne große weitere Änderungen beim FEU-Login-Benutzername Case-Sensitive wird.... Ich wünsche mir, dass dies in die nächste Version aufgenommen wird... wo kann man das beantragen?

Datei /conlib/local.php Zeile 723:

VORHER:

Code: Alles auswählen

    /* Authentification via frontend users */
    $this->db->query(sprintf("SELECT idfrontenduser, password FROM %s WHERE username = '%s' AND idclient='$client' AND active='1'", 
    						 $this->fe_database_table,
    						 Contenido_Security::escapeDB(urlencode($username), $this->db )));
   
	if ($this->db->next_record())
	{
		$uid  = $this->db->f("idfrontenduser");
		$perm = "frontend";
		$pass = $this->db->f("password");	
	}

NACHHER:

Code: Alles auswählen

    /* Authentification via frontend users */
    $this->db->query(sprintf("SELECT username, idfrontenduser, password FROM %s WHERE username = '%s' AND idclient='$client' AND active='1'", 
    						 $this->fe_database_table,
    						 Contenido_Security::escapeDB(urlencode($username), $this->db )));
   
	if ($this->db->next_record())
	{
		# check if Username is exactly the same (Case-Sensitive also if db-koalition not support it by request)
		if($this->db->f("username")==$username){
			$uid  = $this->db->f("idfrontenduser");
			$perm = "frontend";
			$pass = $this->db->f("password");	
		}
	}
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: FEU-Benutzername Case-Sensitive

Beitrag von rethus » Mo 9. Aug 2010, 09:59

Ich wünsche mir, dass dies in die nächste Version aufgenommen wird... wo kann man das beantragen?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: FEU-Benutzername Case-Sensitive

Beitrag von Dodger77 » Mo 9. Aug 2010, 10:02

Ich habe das mal verschoben, das sollte dann als Beantragung reichen.

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Re: FEU-Benutzername Case-Sensitive

Beitrag von kummer » Mo 9. Aug 2010, 10:54

Also das mit der Eindeutigkeit von Benutzernamen ist so eine Sache. Eindeutigkeit ist zwar nicht schlecht. Aber wenn ein Benutzer sich selber registrieren kann (was ja bei FEU nicht unüblich ist), dann erfährt er genau durch die Anforderung der Eindeutigkeit, dass ein bestimmter Benutzername vorliegen muss. Nämlich dann, wenn er versucht, einen Benutzer anzulegen und vom System die Information erhält, dass ein solcher bereits bestehen würde. Umgekehrt muss freilich die Kombination von Benutzername und Passwort eindeutig sein. Wenn der Benutzername alleine nicht eindeutig ist, müsste die Kombination auf Eindeutigkeit geprüft werden. Das ist der Grund, weshalb zumeist bereits beim Benutzernamen Eindeutigkeit gefragt ist.

Besser wäre es deshalb, wenn als Benutzeridentifikation z.B. die Email des Benutzers verwendet werden würde oder eine andere, den Benutzer tatsächlich identifizierende und über das CMS hinaus eindeutige Referenz. Eine zufällige Übereinstimmung wäre dann ausgeschlossen. Ausserdem wäre damit dann auch die Integration von Message-Authentication möglich, wobei gar kein Passwort übertragen werden muss, was insbesondere bei ungesicherten Systemen (nach meiner Einschätzung der überwiegende Teil) günstig wäre. Ein weiterer Vorteil wäre dabei, dass sich diese Information ggf. auch in Client-Zertifikaten finden würde, was bei einer Selbstdeklaration nicht sichergestellt ist (immerhin kommt es vor, dass zwei Leute denselben Namen tragen).
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

Antworten