www.wikidata.de-de.nina.az
Datenvalidierung in der Softwaretechnik bezeichnet die Prufung von beispielsweise Benutzereingaben Weil fehlende oder unbrauchbare Eingaben zu schwerwiegenden Fehlern innerhalb eines Programms fuhren konnen sollten diese Werte vor einer Ubernahme in ein Programm validiert werden Inhaltsverzeichnis 1 Validierung als Plausibilitatsprufung 2 Einsatzgebiete 2 1 Beispiel fur das Validieren von Benutzereingaben in PHP 2 2 Beispiel fur Orthogonale Validierung in Perl 3 Siehe auch 4 Weblinks 5 EinzelnachweiseValidierung als Plausibilitatsprufung BearbeitenValidierung versteht sich als Test auf Plausibilitat englisch Sanity Check bei dem ein konkreter Wert darauf gepruft wird ob er zu einem bestimmten Datentyp gehort oder in einem vorgegebenen Wertebereich oder einer vorgegebenen Wertemenge liegt Viele Programmfehler und Sicherheitsprobleme sind auf fehlende Plausibilisierung von Eingabewerten zuruckzufuhren Fur die Validierung gilt die goldene Regel never trust the user traue niemals dem Benutzer auch Never trust a user input traue niemals einer Benutzereingabe Die Validierung von Werten kann an verschiedenen Punkten der Lebenszeit einer Software stattfinden Im Entwicklungsprozess Wahrend das Programm entsteht sollten regelmassig die einzelnen Funktionen und Module so genannten Unit Tests unterzogen werden die den Quellcode flachendeckend Code Coverage Analysis auf korrektes Verhalten uberprufen Bei der Ubersetzung des Programmes Einige Arten der Validierung konnen bereits von dem Compiler vorgenommen werden insbesondere die Typsicherheit Durch die Laufzeitumgebung Viele Programmiersprachen haben ein Laufzeitsystem das bestimmte Arten von Fehlern selbstandig erkennt insbesondere der Zugriff auf nicht vorhandene Objekte wird von vielen modernen Systemen erkannt Zur Laufzeit Alle Funktionen und Module sollten defensiv umgesetzt sein sich also nicht darauf verlassen dass sie korrekt verwendet werden Das heisst sie sollten wenn sie mit falschen Parametern verwendet werden sofort einen Fehler melden statt komplizierte Folgefehler zu riskieren es gilt die Faustregel Fail Fast schneller Abbruch Hierfur eignet sich vor allem das Konzept der Ausnahmebehandlung Bei falschen Parameterwerten die nach Ansicht des Programmierers eigentlich nie vorkommen durfen kommen Assertions zum Einsatz Bei Benutzereingaben hier gilt der Grundsatz was sich uberprufen lasst wird auch uberpruft Bei ungultigen Eingaben wird die Fehlerbehandlung gestartet eine Fehlermeldung ausgegeben und die Verarbeitung abgelehnt Bei zweifelhaften Eingaben kann eine Warnung oder eine Bitte um Uberprufung durch den Anwender ausgegeben werden Einsatzgebiete BearbeitenDie Eingaben von Online Formularen sollten grundsatzlich validiert werden um Sicherheitsrisiken auszuschliessen Bei XML Daten werden Elemente gegenuber einem Schema uberpruft Schlagt diese Uberprufung fehl gelten die XML Daten als nicht valide Beispiel fur das Validieren von Benutzereingaben in PHP Bearbeiten Werden Eingaben eines Benutzers nicht validiert kann es im weiteren Programmverlauf zu Fehlern kommen Hier ein Beispiel fur ein PHP Skript welches Formulardaten via HTTP POST empfangt und die erste Zahl durch die zweite dividiert zahl1 POST zahl1 zahl2 POST zahl2 echo zahl1 zahl2 Hier hat der Entwickler einige mogliche Fehlerquellen nicht bedacht Es kommt zu einem unerwarteten Ergebnis wenn der Benutzer eines der beiden Textfelder nicht ausgefullt hat Ebenso darf der Benutzer nur Zahlen in das Textfeld einfugen da PHP aufgrund seiner dynamischen Typisierung den String womoglich falsch interpretiert Betragt der Wert in zahl2 0 schlagt die Division fehl Teilen durch 0 nicht moglich Unter Aspekten der Prufung mussen diese Punkte also ausgeschlossen werden um ein fehlerfreies Arbeiten zu ermoglichen if isset POST zahl1 amp amp isset POST zahl2 Sind uberhaupt beide Textfelder ausgefullt zahl1 POST zahl1 zahl2 POST zahl2 if is numeric zahl1 amp amp is numeric zahl2 Sind beide Angaben numerisch if zahl2 0 Ist zahl2 ungleich 0 echo zahl1 zahl2 else echo Teilen durch 0 unmoglich else echo Beide Felder durfen nur Zahlen enthalten else echo Bitte fullen Sie beide Textfelder aus Beispiel fur Orthogonale Validierung in Perl Bearbeiten Um den Programmieraufwand zu reduzieren und den Code ubersichtlicher zu gestalten kann man die Prufungen und die daraus resultierenden Fehlermeldungen Exceptions auslagern Perl Code ohne Validierung sub division my zahl1 shift my zahl2 shift return zahl1 zahl2 Unter Einsatz eines Validierungsframeworks hier Scalar Validation 1 muss der Code fur eine vollstandige Validierung nur geringfugig erweitert werden use MyValidation sub division my zahl1 validate zahl1 gt Zahl gt shift my zahl2 validate zahl2 gt ZahlNotZero gt shift return zahl1 zahl2 Ist zahl1 ein String eine Referenz oder undef und damit keine Zahl oder zahl2 0 erzeugen die angegebenen Regeln Rules Zahl oder ZahlNotZero eine entsprechende Ausnahme Fehlermeldung Was genau passiert kann im Framework konfiguriert werden und muss den Entwickler hier nicht interessieren Wichtig ist nur dass der weitere Programmablauf vor der return Anweisung gestoppt wird Die Regeln konnen irgendwo definiert und getestet werden sie konnen z B auch aus einer Datenbank stammen oder erst zur Laufzeit definiert werden Die Regel Zahl konnte fur einen Integer eine Gleitkommazahl eine Rationale Zahl oder eine Komplexe Zahl stehen Das ist hier nicht naher spezifiziert Siehe auch BearbeitenSoftwarequalitat ValidatorWeblinks BearbeitenEingabeprufungen in PHP Daniel Sentker Der richtige Schutz vor Cross Site Scripting mit PHP Shift Blog 3 Februar 2011 archiviert vom Original am 4 April 2015 abgerufen am 22 Februar 2017 Beispiel fur Gefahrenquellen von nichtvalidierten Eingaben Einzelnachweise Bearbeiten Scalar Validation Abgerufen von https de wikipedia org w index php title Datenvalidierung amp oldid 231406775