Die Anbieter der Webanwendung “Smartsteuer” zur Erledigung der Steuererklärung von der Haufe Group hat vergessen, Datenvalidierung zu implementieren, die prüft, ob die vom Nutzer ausgewählte Bezahlmethode aktiviert ist oder nicht. Man kann immer mit allen Bezahlmethoden bezahlen.
Wenn beispielsweise Lastschrift deaktiviert wurde, kann man den Haken nicht setzen. Das lässt sich jedoch umgehen, und zwar ganz einfach:
Im Frontend wird pro Bezahlmethode ein Radiobutton angezeigt, den man als Benutzer auswählen kann. Das sieht - vereinfacht - so aus:
<input type="radio" name="bezahlmethode" value="paypal">
<input type="radio" name="bezahlmethode" value="lastschrift">
<input type="radio" name="bezahlmethode" value="kreditkarte">Um einen dieser Radio-Buttons zu deaktivieren,
wird das disabled-Attribut verwendet:
<input type="radio" name="bezahlmethode" value="paypal">
<input type="radio" name="bezahlmethode" value="lastschrift" disabled>
<input type="radio" name="bezahlmethode" value="kreditkarte">Nun kann der Nutzer nur noch einen der übrigen Radiobuttons
auswählen, also paypal oder kreditkarte,
weil lastschrift deaktiviert, also nicht auswählbar,
ist.
Die Auswählbarkeit der Radiobuttons lässt sich jedoch ohne Weiteres von jedem ändern, dazu braucht man nichts weiter als einen Webbrowser:
- Rechtsklick auf den deaktivierten Radio-Button
- Im Kontextmenü auf
Untersuchen(so heißt das in Firefox, in anderen Browsern vielleicht anders) klicken, um die Web Developer Tools zu öffnen. Damit kann man den HTML-Code, der gerade im Webbrowser “verwendet” wird, manipulieren. Diese Änderungen sind nur temporär, werden also nicht gespeichert - lädt man die Seite neu, sind sie wieder verschwunden (aber das wollen wir in diesem Fall nicht). - In den Web Developer Tools sollte nun direkt der HTML-Code des
Radiobuttons, der deaktiviert wurde, ausgewählt sein. Nun kann man
das Attribut
disabled(das könnte auch so aussehen:disabled=""oderdisabled="true") aus dem Code entfernen, indem man auf den Text doppelklickt und wie in einem Texteditor den Text entfernt (nur das Attribut mit ggf. dem Wert dahinter). - Der Radio-Button ist nun nicht mehr deaktiviert, sondern kann ausgewählt werden.
Man kann jetzt ganz normal das Formular ausfüllen und den Bezahlvorgang auch mit Lastschrift fortsetzen. Der Bezahlvorgang wird auch tatsächlich ausgeführt und man erhält eine Bestätigungsmail.
Die Erwartung wäre, dass das Absenden des Formulars, in dem man die deaktivierte Bezahlmethode ausgewählt hat, entweder blockiert ist (mit entsprechender Fehlermeldung) oder man nach dem Absenden auf einer Fehlerseite landet mit der Meldung “Diese Bezahlmethode ist nicht verfügbar” oder so ähnlich. Es fehlt also eine Validierung der Daten, die durch das Absenden des Formulars auf dem Server von Smartsteuer.de landen und dort verarbeitet werden.
Das kann durchaus zu größeren Problemen führen, wenn die Bezahlmethode aus Gründen deaktiviert wurde, die zu Kosten führen, wenn sie trotzdem verwendet werden. Auch könnten Daten abfließen an Drittunternehmen.
Das ist ein etwas peinlicher Fehler, der normalerweise vor allem Leuten passiert, die gerade in die Software- bzw. Webentwicklung einsteigen und denen es noch an Erfahrung mangelt. Das ist eigentlich nicht schlimm, da Programmierer von Beginn an explorativ lernen und niemand alles kann. Bei einer solchen Software sollte aber schon detailliert getestet werden, da es auch um höchstpersönliche Steuerdaten natürlicher Personen geht. Solche “Flüchtigkeitsfehler” lassen immer vermuten, dass der Rest der Software von ähnlicher Qualität ist, weil sie nicht ausreichend überprüft wird. Häufig hört man dann als Begründung, dass das zu viel Geld kosten würde, ordentliche Tests dafür zu schreiben, Pair-Programming zu machen und den Quellcode von Junior Devs von Senior Devs prüfen zu lassen.
Mir ist das bei Abgabe meiner Steuererklärung für 2025 aufgefallen. Bisher habe ich mit Paypal bezahlt, aufgrund der massiven Datenverstöße durch diesen US-Konzern habe ich mein Konto dort kürzlich gekündigt. Leider führt das häufiger zu Schwierigkeiten beim Online bezahlen. Das Problem dürfte sich jedoch entschärfen, wenn Wero (die Paypal-Alternative aus der EU) bald für alle verfügbar ist.
Die Meldung an Smartsteuer ist bereits raus gegangen und es wird an einer Lösung des Problems gearbeitet.