Hallo Waldgeist,
Ein gutes Programm liefert für die erwarteten Daten die richtigen Resultate.
Ein sehr gutes Programm verhält sich auch mit unerwarteten Daten definiert, vorhersehbar und sicher.
Ein einfaches Beispiel:
Erwartet wird als Eingabe "J" oder "N"Code:INPUT "Alles löschen? (J/N)", A$ IF A$ = "N" THEN Goto nicht löschen hier wird alles gelöscht
Das funktioniert bestens, so lange nur N und J gedrückt werden. Nun hat aber eine Tastatur noch eine Menge mehr Zeichen als nur diese beiden! Zudem ist die Gross/Klein-Schreibung auch noch zu beachten.
Da A$ ein String ist, kann da auch mehr als 1 Zeichen drin stehen.
Prellt das N gibt es eine Katastrophe, dann sind alle Daten weg!
Eine bessere Variante:
Hier führt nur die Eingabe von "J" zum Löschen aller Daten, alle anderen Eingaben bewirken nichts.Code:INPUT "Alles löschen? (J/N)", A$ IF A$ = "J" THEN Goto löschen hier wird NICHTS gelöscht
Noch besser:
Dies ist jetzt kein Schulbeispiel, sondern ich habe dies in der Praxis mehrfach erlebt.Code:INPUT "Alles löschen? (J/N)", A$ IF A$ = "J" THEN Goto löschen IF A$ = "N" THEN Goto nicht löschen Falsche Eingabe verarbeiten
Je nach dem wie der Programmierer denkt, wählt er im Prinzip eine dieser Lösungen. Du darfst jetzt raten, welche ein sehr guter Programmierer wählt.![]()
Entsprechend geht man auch bein Hacken vor. Exploits findet man ausserhalb der vom Programm erwarteten Datenmenge.
Es ist immer wieder Lustig zu testen, was bei Rechnern oder Formularen passiert, wenn man z.B. negative Zahlenwerte eingibt oder Buchstaben an der Stelle von Ziffern! Schon ein einfacher "U = I * R" kann sich lustig verhalten, wenn man negative Widerstandswerte oder 0 Ohm eingibt.







Zitieren


Lesezeichen