Ich habe eine Webanwendung, die von vielen nicht technischen Benutzern verwendet wird. Ich habe festgestellt, dass mehrere dieser Benutzer die Anmeldeseite der Anwendung auf ihren Desktops speichern (wodurch auch die zugehörigen CSS- und JS-Dateien gespeichert werden). Um dann die Anwendung zu starten, doppelklicken Sie auf das Desktopsymbol, das die lokale Kopie mit dem Protokoll file: // anzeigt.
Dies kann später Probleme verursachen, z. wenn ich das Login-Formular ändere, oder die URL, auf die es posten soll usw. Auch bestimmte Javascript-Dienstprogramme, z.B. PIE.htc funktioniert nicht mit dem Protokoll file: //.
Offensichtlich sollten sie ein Browser-Lesezeichen / Favoriten speichern. Ich suche nach einer Möglichkeit, diese Benutzer zu erkennen und zu warnen, ohne den Rest zu verwirren. Ich habe einige Javascript verwendet, um diese Benutzer zu warnen:
%Vor%Aber dies wird nur Benutzer warnen, die die Desktop-Kopie gespeichert haben, seit ich dieses Stück Javascript hinzugefügt habe.
Hat jemand anderes dieses Problem gehabt und schlaue Lösungen entwickelt, die sie gerne teilen würden?
Danke
Aktualisierung:
Am Ende entschied ich, dies zu tun, indem ich einen Cookie mit einem Nonce-Wert bei der Anforderung der Anmeldeseite setzte und den gleichen Wert wie ein verborgenes Feld im Formular speicherte. Überprüfen Sie dann im Formularübergabe-Handler, ob die beiden identisch sind, und zeigen Sie eine Fehlermeldung an, falls dies nicht der Fall ist. Man könnte das Nonce in einer Sitzung statt eines Cookies speichern, aber ich möchte keine unnötigen Sitzungen erstellen.
Wenn der Benutzer die Anmeldeseite lokal gespeichert hat, hat er wahrscheinlich im gesicherten Formular andere Nonce-Werte als der Cookie (wenn sie überhaupt einen Cookie haben).
Normalerweise würde man einem Login-Formular keinen CSRF-Schutz hinzufügen (das ist so etwas), aber es erfüllt meine Anforderungen. Ich habe über diese Technik im Register Ссылка gelesen, Google hat einen ähnlichen Schutz für ihre Anmeldeformulare implementiert , um vor dem Schmieden von Login-Anfragen zu schützen, Ссылка .
Vielleicht Kekse? Wenn die Site mit file:\
läuft, gibt es wahrscheinlich keine Cookies innerhalb der Anfrage. (Natürlich sollten Sie jetzt einige Cookies (Sitzungsdaten) auf Ihrer Anmeldeseite hinzufügen.
Lesen Sie auch über CSRF Ссылка und die Verhinderungsmethode.
Ich denke, Ihre beste Wette besteht darin, die Benutzer dazu zu bringen, Lesezeichen zu verwenden, anstatt physische Dateien zu speichern.
Abgesehen davon gibt es wahrscheinlich eine Möglichkeit, eine Verknüpfung zu Ihrer URL zu erstellen, vielleicht während der Anmeldung?
Sie könnten wahrscheinlich den http-Referrer auf der Serverseite überprüfen und Benutzer warnen, die nicht von Ihrem gehosteten Login-Formular kommen.
Bearbeiten:
Tatsächlich wurde vorher eine vage ähnliche Frage gestellt und eine gute Erklärung erhalten, warum Referrer keine ideale Lösung ist und auch eine alternative Lösung bietet: Wie überprüfe ich, ob eine Anfrage vom selben Server oder von einem anderen Server kommt?
Warum setzen Sie statt der Warnung eine Weiterleitung auf Ihre Seite?
%Vor% Oder Sie können ein erneutes Laden mit window.location.reload();
Tags und Links javascript html web-applications desktop