Ich mache ein Bookmarklet, damit ein Benutzer Domain-Posts auf meinem Server mit CORS von jeder Seite kreuzen kann. Der Benutzer muss sich vor dem Posten authentifizieren und Cookies werden verwendet. Gibt es eine Möglichkeit zu verhindern, dass eine bösartige Website JavaScript-Code in ihre Webseite einbetten kann, um domänenübergreifende Posts auf meinem Server mit den Anmeldeinformationen des Benutzers zu erstellen?Verhindern CSRF während der Verwendung von CORS?
5
A
Antwort
1
Theoretisch könnte es eine Lösung dafür geben.
- Betten Sie ein eindeutiges CSRF-Token in das Bookmarklet jedes Benutzers ein.
- Umschließen Sie den Code im Bookmarklet in einer anonymen Funktion, damit die Seite nicht darauf zugreifen kann.
- Betten Sie a strong hash function in Ihrem Bookmarklet ein. Dies muss vollständig innerhalb des Bookmarklet-Codes platziert werden, um sicherzustellen, dass es nicht manipuliert werden kann.
- In Ihrem XMLHttpRequest, Sie senden:
- Die Meldung
- Der Hash von:
- Die Nachricht
- Ihre CSRF-Token
- Ein einzigartiges, langes Salz
- A UserID
- Ein Zeitstempel (nur um sicherzustellen, dass die Nachricht jetzt und nicht zu einem anderen Zeitpunkt gesendet wurde)
- Das Salz
- Der Zeitstempel
- A userID
- Auf Ihrem Server validieren Sie:
- Dass der Zeitstempel innerhalb des zulässigen Fehlermarge ist (die wegen dem Computer eines Benutzers erforderlich ist Uhr kann aus sein)
- Der Hash ist korrekt
- Wenn alles korrekt ist, können Sie die Nachricht posten.
Es ist ein Fehler mit diesem Konzept: Wenn eine Website mit einem der von der Bookmarklet (wie Array()
) verwendeten Funktionen Stampfer, die bösartige Website noch in der Lage sein kann, abzufangen, kopiert und/oder die Nachricht ändern , Benutzer-ID oder CSRF-Token.
Verwandte Themen
- 1. verhindern automatisch fügen Schrägstriche während der Verwendung von Parse_str
- 2. So verhindern Sie CSRF in AEM-Webanwendung
- 3. CSRF mit verschiedenen HTTP-Methoden verhindern?
- 4. CSRF-Angriff auf WCF-Dienste verhindern
- 5. Wie CSRF Angriff in ASP.net Webform verhindern?
- 6. Selektive Verwendung von CSRF-Filter von Spring Security
- 7. Unterstützt die Verwendung von CSRF-Formtoken die Spam-Prävention?
- 8. Speicherlecks während der Verwendung von Doppel-Array
- 9. Zugriffssteuerelemente während der Verwendung von MasterPage
- 10. Verbindungsfehler während der Verwendung von Cqlsh
- 11. Framework Blackboxing während der Verwendung von Webpack?
- 12. autoActivityTracking während der Verwendung von google-services.json
- 13. Fragmentierungsansicht während der Verwendung von FragmentStatePagerAdapter aktualisieren
- 14. Logisches Problem während der Verwendung von Beschleunigungsmesser
- 15. Speicherlecks während der Verwendung von gstbuffer
- 16. Überlappende Elemente während der Animation verhindern
- 17. Verhindern Sie UITableViewCell Layout während der Animation
- 18. von cs Seite?
- 19. 301 Status während der Verwendung der Postanforderung
- 20. Verhindern, dass WPF die Steuerung während der Entwurfszeit auswertet
- 21. Wie funktioniert der Semi Colon während der Verwendung von out.write?
- 22. Verhindern Bildschirm flackern während Ereignis
- 23. Verhindern Splitting Fenster bei der Verwendung von Python in Vim
- 24. Laravel 4: Verhindern, dass mehrere Formularübermittlungen - CSRF-Token
- 25. NullPointerException während der Verwendung von Put-Methode von HashMap
- 26. Probleme beim Subtrahieren von Variablen während der Verwendung von jQuery
- 27. Hinzufügen von UIBarButtonItem zu NavigationBar während der Verwendung von UIPageViewController
- 28. Update während PaintComponent (Java) verhindern
- 29. Verwendung des Standardkonstruktors verhindern
- 30. Fehler 401: nicht autorisiert, auch nach der Verwendung von API-Schlüssel während der Verwendung von www.openweathermap.org
Nein. Vielleicht könnten Sie stattdessen in einen 'iframe' unter der Kontrolle Ihrer Website schreiben und dann die Benutzer 'bestätigen'() 'vor dem Posten. Oder Sie könnten ein eindeutiges CSRF-Token in das Bookmarklet jedes Benutzers einbetten und dann ... Warten Sie, ich bekomme eine Idee ... – user2428118