Thread RFC: Neue Einstellung als Schutz gegen CSRF (7 answers)
Opened by pq at 2012-03-29 16:50

pq
 2012-03-29 16:50
#157105 #157105
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Ich überlege schon eine Weile, wie ich manche Zugriffe aufs Forum vor Wikipedia:CSRF schütze.

Die Formulare (also alle Post-Requests) sind ja mit einem Token geschützt.

Es gibt aber auch einfache Klicks, die etwas in der Datenbank verändern.
Wenn man auf einen Thread klickt, dann wird der als gelesen markiert.

Wenn man jetzt den Link zu einem Thread irgendwo als <img> tag in einer Seite einbettet, dann passiert das aber auch, obwohl man den Thread gar nicht zu gesicht bekommt und auch gar nichts davon merkt, dass er aufgerufen wird.

Das ist nicht besonders tragisch, aber ärgerlich. Speziell auch für Moderatoren, denn die sollten ja möglichst alle Artikel auch lesen und würden ggfs. einen verpassen, wenn er schon als gelesen angesehen wird und eingeklappt wird.
(Genauso bei Links auf private Nachrichten z.b., wobei man dafür die genaue ID kennen müsste)

Es ist zwar unwahrscheinlich, dass das irgendjemand absichtlich ausnutzt, aber wenn ist es halt wie gesagt ärgerlich. Und ein Schutz wäre relativ einfach zu machen.

Es geht darum, dass man aus bestimmten Gründen zwar nicht den Referrer als generellen Schutz gegen CSRF hernehmen kann (warum würde jetzt zu weit führen). Aber für diese Art von Requests ist es gut genug, vorausgesetzt, der Browser und/oder Proxy übeträgt auch wirklich immer den richtigen Referrer und man hat es nicht abgeschaltet.

Ich würde jetzt gerne eine neue Einstellung implementieren:
Bei einem Klick auf einen Thread wird dieser nur als gelesen markiert, wenn der Referrer entweder leer ist oder vom Forum kommt (bzw. von dieser Webseite hier allgemein).
(Wenn jemand Referrer abgeschaltet hat, dann sollte man in den Einstellungen darauf hinweisen, dass sie (zumindest für dieses Forum) eingeschaltet werden sollen.)

Diese Einstellung würde ich als default aktivieren.
Das hätte dann aber zur Folge, dass auch z.b. bei einem Klick von einer anderen Webseite auf einen Thread dieser nicht als gelesen markiert würde. Erst nach einem Reload z.B. oder wenn man ihn aus dem Forum selber später nochmal anklickt.

Die Frage ist jetzt, ist das verständlich, was passiert, und sind für euch die Folgen ok?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread RFC: Neue Einstellung als Schutz gegen CSRF