𝗬𝗵𝗿 𝗦𝗮𝗮𝗦 𝗹ä𝘀𝘀𝘁 𝗚𝗲𝗹𝗱 𝗱𝘂𝗿𝗰𝗵𝘀𝗶𝗰𝗸𝗲𝗿𝗻

Die meisten Entwickler bringen ihr SaaS auf den Markt und machen dann weiter. Sie behandeln Sicherheit als eine Aufgabe für später. Sie warten darauf, dass echte Nutzer oder echtes Geld eintreffen.

Echte finanzielle Verluste entstehen oft durch einfache Fehler. Es handelt sich dabei nicht um komplexe Hacks, sondern um Logikfehler in Ihrem Code.

Hier sind vier gängige Wege, wie Sie Geld verlieren:

  1. Race Conditions in Credit-Systemen Sie lesen ein Nutzerguthaben, prüfen es und schreiben dann das neue Guthaben. Wenn ein Nutzer zwei Anfragen gleichzeitig sendet, könnten beide Anfragen die Prüfung bestehen, bevor die erste die Datenbank aktualisiert. Sie liefern zwei Dienste zum Preis von einem.

Die Lösung: Nutzen Sie atomare Datenbankoperationen. Anstatt erst zu lesen und dann zu schreiben, verwenden Sie einen einzigen Befehl, um das Guthaben nur dann zu aktualisieren, wenn der Nutzer über genügend Credits verfügt.

  1. Vertrauen auf Client-Inputs zur Identifizierung Sie nehmen die E-Mail-Adresse aus dem Request-Body während des Checkouts. Ein authentifizierter Nutzer kann diese E-Mail-Adresse in die Adresse eines anderen ändern. Dies ermöglicht es ihnen, Abrechnungssitzungen für falsche Konten zu erstellen oder Ihr System zu sondieren.

Die Lösung: Vertrauen Sie niemals der Identität aus dem Request-Body. Extrahieren Sie die E-Mail-Adresse aus dem verifizierten Session-Token auf Ihrem Server.

  1. Fehlerhafte Logik bei der jährlichen Abrechnung Viele Entwickler setzen Nutzer-Credits zurück, indem sie auf Stripe-Zahlungsereignisse hören. Das funktioniert bei monatlichen Abos. Bei jährlichen Abos schlägt es fehl. Stripe sendet nur ein Ereignis pro Jahr. Ihre Nutzer erhalten am ersten Tag Credits und für die nächsten elf Monate nichts mehr.

Die Lösung: Entkoppeln Sie das Zurücksetzen der Credits von den Abrechnungsereignissen. Nutzen Sie einen täglichen Cronjob, um zu prüfen, welche Nutzer basierend auf einem Reset-Datum ein Zurücksetzen benötigen.

  1. Unsichere Token-Speicherung Sie speichern Passwort-Reset-Token im localStorage. Jedes Skript auf Ihrer Seite kann auf den localStorage zugreifen. Dazu gehören Browser-Erweiterungen und Drittanbieter-Analysen.

Die Lösung: Nutzen Sie Ihr Authentication-SDK, um Recovery-Token zu verarbeiten. Lassen Sie die Library den Token automatisch verarbeiten, ohne ihn im Local Storage zu speichern.

Das Problem ist immer dasselbe: Sie vertrauen dem Client. Sie vertrauen darauf, dass Anfragen nacheinander eintreffen. Sie vertrauen darauf, dass Abrechnungsereignisse jeden Fall abdecken.

Diese Probleme zu beheben dauert weniger als einen Tag. Überprüfen Sie Ihren Code, bevor Sie Geld verlieren.

Source: https://dev.to/manolito99/your-saas-is-probably-leaking-money-right-now-and-you-dont-know-it-1g38