Guten Tag RetroTown!
Wie vielleicht einige wissen haben Sound und ich im März an einem neuen Live-Hotel CMS gearbeitet.
Jedoch stellten wir das Development ein und die internen Files liegen seitdem auf meinem Computer verwahrlost rum... Gestern wurde von Satoshi eine 'Anfänger API' veröffentlicht, in den Kommentaren las ich dass man mehr von mir erwarten hätte können... Ich nahm mir die Kommentare natürlich persönlich und möchte deswegen die ehemals für das Live-Hotel geplante 'OAuth API' releasen.
Das Ziel der OAuth-API war eine Schnittstelle zwischen offiziellen Fanseiten um dem Retro selbst zu schaffen, aber OAuth ist nicht nur eine API sondern auch ein Login-System.
Das Ziel des Login-Systems war eine sichere Verschlüsselung (Client- & Serverside) zu haben und CSRF-Attacken unwirksam zu machen. Ihr könnt euch ja die Source selbst ansehen
Ich bitte euch die Datei 'login.js' zu nutzen, denn die verschlüsselt Passwörter bereits clientside. OAuth hasht das nochmal dann per SHA3-512.
Also merkt euch: Solltet ihr zu OAuth greifen dann verschlüsselt bei der Registrierung die Passwörter zuerst per SHA3-256 und dann nochmals per SHA3-512.
Die Ausgabe der API erfolgt immer als JSON-String.
Unbedingt unter "oauth/conf" die "configuration.ini" Datei bearbeiten!
Ich empfehle euch auch die internen OAuth Dateien vom Web unzugänglich zu machen.
In dem Rar-Archiv könnt ihr eine Datei namens "http_req.class.php" finden, diese gibt ihr einer offiziellen Fanseite einfach mit! Nachdem sie die Datei erhalten haben, öffnet ihr die Datei "verified.class.php". In der Line 22 könnt ihr ein array namens '$pages' sehen, in diesem fügt ihr nun irgendeinen Schlüssel-Wert ein welchen ihr der offiziellen Fanseite mitteilt... Der Schlüssel bekommt den Wert der Fanseiten-URL + .auth Datei. Die .auth könnt ihr z.B. BLABLA2238zf7.auth nennen, die Fanseite muss diese .auth Datei dann auf ihrem Server hochladen. Direkt unter der Line 22 (23) ist ja bereits auch ein Beispiel vorhanden.
Wozu das ganze? HTTP-Header sind manipulierbar, deswegen manipulieren wir selbst den HTTP_REFERER Header und setzen etwas beliebiges, OAuth's Verifizierungssystem wird dann einfach den manipulierten HTTP_Referer in seiner Tabelle 'scannen'. Findet er eine Übereinstimmung mit dem manipulierten HTTP_Referer so schickt er eine Anfrage an die registrierte Adresse und prüft ob die .auth Datei existiert.
Bevor ich es vergesse, OAuth arbeitet per User Ids. Ich finde man sollte immer per Id arbeiten, sonst hat man später vielleicht mal Probleme bei gewissen Features wie den Benutzernamen ändern (Siehe fail im PSN xd)
Hier eine Todo-List die ihr unbedingt abarbeiten solltet:
- login.js - Adjust to your html file | form names, input names | ...
- login.js - Check for empty input | Min. char check | Max. char check | ...
- OAuth - Adjust to your system
Es gibt eigentlich nichts mehr zusagen außer Enjoy Sollte ich was vergessen haben einfach bescheid geben!
Requirements: Min. PHP 7.1.7 (x86/x64)
Bedingung: Der Quellcode ist frei für alle, jedoch müssen die Credits erhalten bleiben auch wenn das ganze nur als Basis für eine leistungsfähigere API dienen mag.
https://www.virustotal.com/de/file/921669…sis/1510322823/
-----------------------------------------
MfG,
Rockstar*