Facebook Finden Sie Alex Wiebogen Twitter Finden Sie Alex Wiebogen Xing Finden Sie Alex Wiebogen Google+

Share this Page:


 

PHP/MySQL Loginsystem mit SMS Authentification

Unser Loginsystem verzichtet vollkommen auf alle unsicheren
Features
  • Keine Cookies (Hijack Gefahr)
  • Formularsession - Ablauf nach x Sekunde
  • Dynamische Formularfeld-Namen (Bot protection)
  • SMS Authentifikation - (Optional)
  • OOP Programmiert
  • JS 512Bit Verschlüsselung (Passwort)
  • Detailierte Logfunktion
  • Debugfunktion ON/OFF

Video-Demo

Screenshots

Anwendungsbeispiele

Konfiguration

Eines der entscheidensten Features dieses Systems ist das Token-System für Formulare welches nicht nur für Loginformulare nützlich ist. Wie dies funktioniert? Beim Aufruf des Formulars wird ein Eintrag in die Datenbank gemacht. Dieser beinhaltet einen generierten Token des Formulars, die IP-Adresse, Feldnamen sowie einen Timestamp da dieser nur begrenzt gültig ist. Da wir den Form-Hash via POST übermitteln müssen, empfehlen wir diesen zu verändern bevor er in die Datenbank geschrieben wird, zB umkehren, kürzen oder ähnliches.

PHP-Code:
				// Wir übergeben hier 2 Werte, die Source und das Target.
				$login->initForm();
 			    $login->setFormSession('login', 'login');
				

Tipp: Die Identifizierungsmerkmale können ganz einfach um weitere ergänzt werden zB Cookies, PHP-Session oder andere Merkmale.

Damit ist das "Nachbauen" eines Formulars oder das Forcen absolut unmöglich. Das System blockt alle Anfragen ohne gültigen Sessioncode sofort ab. Trotzdem ist der Form-Hash an die IP gebunden.
PHP-Code:
				// LOGIN PART //
				// Abgefragt wird hier die Source, ob ein Submit von dieser erwartet wird.
				if(TRUE === $login->checkFormSession('login')){
				

Um zu verhindern dass Bots unser Formular automatisiert auszufüllen und das Login zu Forcen haben wir weitere Vorsichtsmaßnamen getroffen.
Die meisten Bots suchen nach Keywords in den "Name" elementen zB email, username, login, etc. Um dem vor zu beugen haben alle Formularfelder dynamisch erstelle Namen welche zufällige Hashes sind. Damit erschwert es "einfachen"-Bots das Automatisierte Ausfüllen von Feldern.
PHP-Code:
				// Formular PART //
				// Leerzeichen bei < ?= wurden absichtlich zur Darstellung des Codes eingefügt.
				
				

Egal ob mit oder ohne SSL Zertifikat sollten keine Kennwörter mehr ohne Verschlüsselung übertragen werden. Daher wird das Kennwort bereits vor dem Absenden mittels Javascript in einen SHA512-Hash umgewandelt.
PHP-Code:
				// 
				
				function CryptPwd(){
					pwd = document.getElementsByName("< ?=$login->getPassFieldName();?>");
					pwd[0].value = CryptoJS.SHA512(pwd[0].value);
				}
				


CMS Version: 1.1 | Build: 20160918_0314_v3_MySQL5-6-0

Copyright © 2014 by Wiebogen Systems all rights reserved!