Datenvalidierung

Datenvalidierung in der Softwaretechnik bezeichnet die Prüfung von beispielsweise Benutzereingaben. Weil fehlende oder unbrühbare Eingaben zu schwerwiegenden Fehlern auftreten können .

Validierung als Plausibilitätsprüfung

Validierung Versteht sich als Test – auf Plausibilität ( englisch Sanity Check ), bei ihnen ein Betonen Wert Darauf geprüft Wird, ist ob zu Einem Bestimmt Datentyp Gehört oder in Einem vorgegebenen Wertebereich oder Einer vorgegebenen Wertemenge Liegt. Viele Programmfehler und Sicherheitsprobleme sind auf Fehlende Plausibilisierung von Eingabewerten zurückzuführen.

Für die Validierung gilt die goldene Regel: Vertraue nie dem Benutzer , deutsch , traue nietmals dem Benutzer ‚ (auch: Vertraue niemals einer Benutzereingabe , deutsch , traue niemals einer benutzerereingabe‘ ). Die Validierung von Werten kann verschiedene Punkte der Lebenszeit einer Software finden :

  • Im Entwicklungsprozess: während das Programm entsteht, sollten Regelmässig sterben einzelnen Die Leistung und Module so genannten Komponententests unterzogen Werden, sterben die Quellcode flächendeckend ( Code Coverage Analysis ) auf Korrektes verhalten opinions.
  • Einige Programme der Validierung können bereits von dem Compiler vorgenommen werden, inzonderheid de Typesicherheit .
  • Durch die Laufzeitumgebung : Viele Programmersprachen haben ein Laufzeitsystem, das bestimmte Kunst von Fehlern selbständig bestätigt; Objekte wurden aufgrund der modernen Systeme erkannt.
  • Zur Laufzeit : Alle Funktionen und Module sollten defensiv umgesetzt sein, also vergiss nicht, dass sie richtig verdorben sind. Das heißt, sie sollten, , ideal mit falschen Parametern used Werden, sofort EINEN Fehler melden leiht Komplizierte Folgefehler zu riskieren (n vergoldet Faust Regel sterben: Fail Schnell , deutsch , schneller Abbruch ‚ ). Hier finden Sie das Eigentum der Ausnahmebehandlung . Bei falschen Parameterwerten, sterben nach Ansicht des Programmierer „eigentlich nie vorkommen darf“ kommen Assertions zum Einsatz.
  • Bei den Benutzereingaben: hier ist der Grünsatz „war zum ersten Mal da, wird auch überprüft“. Bei ungültigen Eingaben wird die Fehlerbehandlung gestartet, eine Fehlermeldung ausgegeben und verarbeitet. Bei zweifelhaften Eingaben Kann Eine Warnung oder Eine Bitte um Überprüfung Durch den Anwender ausgegeben Werden.

Einsatzgebiete

  • Die Eingaben von Online Forms müssen grundsätzlich bestätigt werden.
  • Bei XML -Daten Werden Elemente Gegenüber Einem Schema überprüft. Schlägt diese überprüfung fehl, gelierte XML-Daten als nicht gültig ( wohlgeformt ).

Beispiel für das Validieren von Benutzereingaben in PHP

Konnte Eingaben eines Benutzers nicht validiert werden, kann es möglich sein, das Programm zu programmieren. Hier ein beispiel für ein PHP – Skripte, bildet Welche Daten via HTTP POST empfängt und sterben erste Zahl Durch Zweiten dividiert sterben:

$ zahl1 = $ _POST [ 'zahl1' ];
$ zahl2 = $ _POST [ 'zahl2' ];
echo $ zahl1 / $ zahl2 ;

Hier war der Entwickler der Einzige, der an die Fehlerquellen-Cousine dachte:

  • Es kommt zu einem unerwarteten Ergebnis, wenn die Benutzer von
  • In den Textfeld einfügen, da PHP aufgrund seiner dynamischen Typisierung den String womöglich falsch interpretiert
  • Beträgt der Wert in zahl2‚0‘, die Division fehl (Teilen durch 0 nicht möglich)

Unter Aspekten der Prüfung müssen diese Punkte auch ausgeschlossen werden

if ( isset ( $ _POST [ 'zahl1' ]) && isset ( $ _POST [ 'zahl2' ])} { // Verstehen Sie beide Textfelder ausgefüllt?
 $ zahl1 = $ _POST [ 'zahl1' ];
 $ zahl2 = $ _POST [ 'zahl2' ];
 if ( is_numeric ( $ zahl1 ) && is_numeric ( $ zahl2 )) { //
 Sind beide Angaben numerisch? if ( $ zahl2 ! = 0 ) { // Ist zahl2 ungleich 0?
 echo $ zahl1 / $ zahl2 ;
 } else {
 echo 'Teilen durch 0 unmöglich!' ;
 }
 } else {
 echo 'Beide Felder dürfen nur Zahlen enthalten' ;
 }
} else {
 echo 'Bitte füllen Sie beide Textfelder aus' ;
}

Beispiel für Orthogonale Validierung in Perl

Über die Programmeaufwand zu reduzieren und zu überarbeiten, können Sie Fehlermeldungen / Ausnahmen auslagern.

Perl-Code ohne Validierung:

 Unterteilung {
 mein $ zahl1 = Verschiebung ;
 meine $ zahl2 = Verschiebung ;
 return $ zahl1 / $ zahl2 ;
}

Unter Einsatz eines Validierungsframeworks, hier Scalar :: Validation, [1] muss der Code für eine Validation nur geringfügig erweitert werden:

verwende myvalidation ;
Unterteilung { mein $ zahl1 = validate ( zahl1 => Zahl => Verschiebung ); mein $ zahl2 = validate ( zahl2 => ZahlNotZero => shift ); return $ zahl1 / $ zahl2 ; }

Ist zahl1ein String, Eine Referenz oder undefund DAMIT keine Zahl oder zahl2 == 0, erzeugen sterben angegebenen Regeln ( Rules ) Zahloder ZahlNotZeroEine ausnahme entsprechende / Fehlermeldung. Was genau passiert, vielleicht in Framework konfiguriert war, hat hier kein Interesse an Entwickler. Wichtig ist nur, dass die returnProgrammblauf vor der -Anweisung gestoppt wird.

Die Regeln can irgendwo Definiert und getestet Werden, sie can zB auch Aus einer Datenbank stammen oder erst zur Laufzeit Definiert werden: Die Regel ZahlKönnte Für ein Integer , Eine Gleitkommazahl , Eine Rationale Zahloder Eine Komplex Zahl Stehen. Du bist hier nicht näher spezifiziert.

Siehe auch

  • Softwarequalität
  • Validator

Weblinks

  • Eingabeprüfungen in PHP
  • Daniel Sentker: Der Direktor Schutz für Cross-Site-Scripting mit PHP. Shift Blog, 3. Februar 2011, Archiviert vom Original am 4. April 2015 , abgerufen am 22. Februar 2017 (Beispiel für gefahrenquellen von nichtvalidierten Eingaben).

Einzelnachweise

  1. Hochspringen↑ Skalar :: Validierung