--- section: general language: de title: "Never trust user input: Gratis Pizza" url: never-trust-user-input tags: [security] published: 2018-03-10 22:00:00 author: name: Kevin Kandlbinder embeddedImagesLocal: - './assets/001-free-pizza/firefox_2018-03-10_11-51-08-e1520680515546.png' --- import { getImage, GatsbyImage } from 'gatsby-plugin-image'; > „Never trust user input“ Diese einfache Regel der Web-Sicherheit sollte jeder Web-Entwickler schon mal gehört haben, doch trotzdem gibt es noch immer viele Entwickler, die sich nicht genug darum kümmern und genau das wird vielen Seiten zum Verhängnis. ## Das Casino Als ich mir vor kurzem Sushi auf [Pizza.de](https://web.archive.org/web/20180303184257/https://pizza.de/) (Ja, ich sehe den Wiederspruch) bestellt habe wurde mir auf der Bestellbestätigungs-Seite Werbung für das so genannte [Pizza.de-Casino](https://web.archive.org/web/20180306155955/https://pizza.de/casino/) angezeigt. Da ich eh auf meine Bestellung warten musste und man nichts beahlen muss dachte ich mir, dass man das ja mal probieren kann.  Nach 9 von 10 täglichen Versuchen war ich schließlich frustriert: „Es muss doch irgend einen anderen Weg geben…“ Also habe ich mir die Netzwerkaktivität wärend des Spielens angesehen: Eine Anfrage an Facebook und eine an Google, beides Analytics. Folglich muss mein eigener Browser berechnen, ob ich gewonnen habe oder nicht. ## Der Code Nachdem ich das sah war die Challenge nicht mehr zu ignorieren: ICH WILL GEWINNEN! Also habe ich mich durch den Code gewühlt und mir fielen mehrere Variablen auf, die offensichtlich für die Gewinnchancen zuständig sind. (Fun Fact: Die Chance beim ersten Versuch ist größer als bei allen weiteren) Als ich aber mit denen ein bisschen ohne Ergebnis rumgespielt habe, habe ich mich direkt in die Funktionen gesetzt und nachvollzogen was das Programm genau macht wenn ich den Button drücke, und da war es: In Zeile 203 fand sich die Funktion „win“…