JavaScript Kann JS/jQuery mehr Sicherheit bringen?

Hi Leute,

da ich mich - wie in einem anderen Thread bereits gesagt - mit Javascript und jQuery beschäftige, habe ich mir auch mal Gedanken darüber gemacht, ob man jQuery nicht nur zur DOM - Aufhübschung oder AJAX nutzen kann, sondern auch, um eventuell die Sicherheit einer Webseite zu erhöhen.


Zum einen könnte man damit doch sicherlich Logins ziemlich gut absichern. Sagen wir mal, man hätte eine HTML - Seite. Auf dieser befinden sich 6 Teilbilder, die zusammen ein großes ergeben. Erst wenn man die 6 Teile (die zufällig auf der Seite verstreut liegen zusammensetzt, wird eine Loginform erzeugt.
Wäre es damit nicht möglich automatisierte Bruteforceangriffe abzuwehren gesetzt dem Fall, die PHP - Datei, die den Login per POST verarbeitet, hat einen zufällig und schwer bis unmöglich erratbaren Dateinamen, sodass ein direktes Ansprechen der Login - PHP nicht möglich wäre und man die erzeugte Form zwangsweise braucht?
Wie könnte man sowas umgehen bzw. wie schwer wäre es dann, einen Bot zu bauen, der die Teilelement auf die Zielfläche zieht?
 
Hi,

mit JavaScript lässt sich nicht viel mehr Sicherheit "erzeugen", da die Form letztenendes immer noch vom Browser abgesendet werden muss, damit überhaupt eine Funktionalität besteht. Aus demselben Grund kann man auch niemals die Datei auf dem Server verstecken, da alles was im Browser passiert auch gesehen werden kann.

Ein Beispiel:
In neueren Browsern sind Entwicklungswerkzeuge eingebaut (oder können hinzugefügt werden), die genau aufzeichnen welche Requests an den Server gesenedet wurden d.h. man benötigt nur einen Blick um die Login-Datei zu finden, die aufgerufen wird.

Wirksame Sicherheit kann meiner Meinung nach nur auf der Server-Seite erzeugt werden, da ein Angreifer alles sehen kann was bei ihm auf dem PC passiert.

Beispielsweise wäre eine IP-Sperre nach x fehlgeschlagenen Login versuchen schon recht gut (wie auch bei diesem Board der Fall), aber nichts geht über ein möglichst komplexes Passwort, was sich nicht so einfach Brute-Forcen lässt.
 
Danke für deine Meinung.

Aber was wäre, wenn ich die Logindatei (also die mit dem Loginmechanismus) dynamisch per PHP erstelle? Dann könnt ich auch den Namen der Datei jedes Mal zufällig erstellen.
Einzig wäre die Frage, wie man dann Javascript mitteilt, wie die zufällige Logindatei heißt, ohne es plaintext in den HTML - oder Javascript - Text zu schreiben.
 
Wenn die Logindatei immer anders heisst (oder du einen zufälligen Wert mit der Form übergibst, der nur einmal gültig ist) erhöhst du die Sicherheit insofern, als das man zwei Requests für einen Passwort Versuch gibt. Aber auch hier wieder dasselbe Problem, was du schon angesprochen hast:
Den Namen der Datei (oder den zufälligen Wert) musst du dem "normalen" Client mitteilen, aber auch wenn du ihn verschlüsselst muss er irgendwo wieder entschlüsselt und gesendet werden. Und genau dasselbe kann dann auch der Angreifer machen, da der Client-Quelltext für jeden sichtbar ist.
 
Man kann Logins aber gegen MITM (teilweise) durch Clientkryptografie via JS sichern. Wenn der MITM aber schreiben kann -> fail.
Am sichersten ist halt SSL, erzeugt aber wiederrum viel Serverlast -> DoS -> fail.
Normales Form -> fail.
Form mit Key -> 2 Requests -> noch mehr Serverlast -> fail.
Captcha -> sehr viel mehr Serverlast -> fail, aber halbwegs sicher, nervt User aber extrem. (Autologin geht dann nicht mehr)

Letzendlich ist ein Loginform immer fail wie du siehst.
 
An sich ist dein Puzzle-Spiel auch eine Art von Captcha. Du musst halt schauen, dass du ausreichend Puzzle-Aufgaben erstellst, und dass diese möglichst nicht so einfach durch Computer zu lösen sind. Wenn du zu wenige Aufgaben hast, dann kann ein Angreifer schnell manuell jedes der Puzzles lösen und seinem Bot die Lösungen für die Bilder fest einprogrammieren.
Wenn die Aufgaben zu leicht / zu ähnlich sind, dann ist es auch nicht schnell, einem Bot das Lösen beizubringen. Bei Fotos weisen die Ränder von nebeneinanderliegenden Puzzleteilen zum Beispiel hohe Ähnlichkeiten auf, wenn du Nummern auf die Teile schreibst, dann braucht man da u.U. nur eine einfache Ziffernerkennung.
Eine zusätzliche Sicherheit durch JavaScript ergibt sich nicht, man braucht keinen Bot, der Bilder hin und herzieht, es reicht, die richtigen Anfragen an den Server zu schicken.
Captchas lassen sich zudem einfach durch Crowdsourcing ("Wenn du diese Pornos sehen willst, löse das Captcha") oder durch günstige chinesische Arbeitskräfte umgehen.
Selbst gebaute Captchas erhöhen für "unwichtige" / uninteressante Ziele auf jeden Fall die Brute Force-Sicherheit enorm, allerdings auf Kosten der Benutzer.

Wenn es dir nur darum geht, ein Passwort-Brute-Forcing zu verhindern, dann kommst du mit einer IP-Sperre, die nach 5-maligem fehlgeschlagenen Login für ein paar Stunden den Zugriff verweigert, sehr viel weiter.
 
Zurück
Oben