Tach!
Warum nicht? Wenn Parameter im QueryString Schreibaktionen auslösen, dann ist das so und da hat sich der Enwickler bestimmt was dabei gedacht.
Natürlich, es macht ja auch nie jemand Fehler bei dem, was er sich da ausdenkt.
Stell Dir vor, Du hast eine Tabelle im Browser und für jede Zeile gibt es eine Löschoption. Soll denn da für jede Zeile ein Formular+Submit-Button in den Browser gerendert werden nur, damit das Löschen eine POST-Aktion wird?
Da wird ein delete=id
gesetzt und fertig ist der Lack.
Dann kommt der Bot vorbei, folgt allen Links, und weg ist der Lack.
Du kannst auch ein Formular für alles nehmen, statt je ein Formular, wenn du etwas sparen möchtest. Andererseits kann der Link auch zu einer Bestätigung führen, die erst dann den POST-Request auslöst. Hauptsache, der einfache Link führt sie nicht direkt aus.
Natürlich mit Rückfrage nach vorheriger Authorization. Wenn die Sicherheit darin bestehen würde, das Versenden solcher URLs per Email zu vermeiden, wäre das je geradezu idiotisch.
Die Idiotie ist, Links mit Schreiboperation zu verbreiten, statt eine Schreibbestätigung per POST-Request einzubauen. Als zweiten Schritt beispielweise. Der verbreitete Link führt auf das Formular, da kann der Nutzer vielleicht auch nochmal sehen, was da über ihn gespeichert werden soll, und dann gehts per POST-Request zur eigentlichen Schreibaktion.
Ebensowenig ist Sicherheit eine Frage der Requestmethode. Das war sie noch nie!
Es gibt aber Requestmethoden, die real existierenden Bedingungen unterliegen. Beispielweise die, dass Links, deren Ziel üblicherweise mit GET aufgerufen wird, ungefragt und ohne Beachtung der Aktion, die dabei ausgelöst wird, von Bots verfolgt werden. Seien es Suchmaschinenbots oder auch Link-Checker, mit denen man in seinem eigenen Angebot tote Links aufspüren möchte, oder der Offline-Reader, der sich zu diesem Zweck alle verlinkten Seiten holt.
dedlfix.