Soll die Funktion oder der Aufrufer für die Validierung der Eingabe zuständig sein?

7

Ich mache eine Sicherheitsüberprüfung einer ziemlich großen php-Anwendung und frage mich, wo ich meine Benutzereingabe-Validierung einschließen sollte.

Sollte ich die Daten validieren, dann die sauberen Daten an die Backend-Funktionen senden oder sollte ich mich auf jede Funktion verlassen, um ihre eigene Validierung durchzuführen? Oder sogar beide?

Gibt es einen Standard oder Best-Practice für diese Art von Dingen?

Momentan macht die App beides inkonsistent und ich möchte die Dinge konsistenter machen.

    
haudenschilt 07.06.2010, 19:50
quelle

5 Antworten

6

Sie sollten die Daten von außen so schnell wie möglich validieren. Abhängig von der Architektur kann die Backend-Validierung innerhalb der zuständigen Funktionen ein zweiter Schritt sein, hängt jedoch nicht von der Backend-Validierung ab, sondern validiert die Daten, wenn sie in Ihrer Anwendung eingehen.

Die Vorteile der Validierung mit den Funktionen als Ergänzung zur vorherigen Validierung bestehen darin, dass es einfacher (und sicherer) ist, das System zu pflegen, weil Entwickler (nach dem Schlupf) die Anwendung nicht kaputt machen können. Wenn Sie eine Anwendung mit Plugin-Unterstützung haben, z. Für Plugins von Drittanbietern sind auch sichere Funktionen ein Muss.

    
Emil Vikström 07.06.2010, 19:59
quelle
8

Beides ist die bessere Antwort. Die Datenvalidierung sollte in jeder Funktion stattfinden, die mit den Daten umgehen wird, um das Problem der Hope Driven Development ( HDD )

    
MANCHUCK 07.06.2010 20:00
quelle
2

Ich denke, wenn Sie können beides tun, und Zeit / Ressourcen sind kein Problem, warum nicht?

    
Raven Dreamer 07.06.2010 19:52
quelle
2

Die Überprüfung im Backend ist so, als würden Passagiere nach dem Einsteigen in das Flugzeug gescannt. Der eigentliche Sinn der Validierung besteht darin, das Injizieren von Elementen zu verhindern, die Ihre App beeinträchtigen könnten. Sie müssen also validieren, bevor Sie das Tor betreten:)

    
Babiker 07.06.2010 20:03
quelle
2

Es hängt vom Umfang / der Definition der Anwendung ab. Aber traditionell werden Ihre Funktionen an manchen Stellen verwendet. $ Object- & gt; doSomething () tut genau dies. Indem Sie sich auf die Validierung dort verlassen, verhindern Sie die Fähigkeit, etwas () Ihrer eigenen Accord zu tun, weißt du?

Wenn Sie die Validierung auch außerhalb behalten, können Sie sie leicht verwalten. Keine Notwendigkeit, es in dieser bestimmten internen Funktion zu jagen. Halte es OOP, aber mehr wie

$ data = $ validator- & gt; sanitizeSomething ($ data); $ object- & gt; doSomething ($ data);

Dies hält Ihre Validierungsregeln getrennt und leicht zu verwalten sowie Ihre internen Funktionen.

Um es näher auszuführen, sagen Sie, Sie haben ein db-Objekt, das der Tabelle ein Array hinzufügt:

%Vor%

Möchten Sie Ihre Validierung dort?

%Vor%

wäre albern - Sie würden das in dem Objekt, in dem Sie arbeiten, wollen

%Vor%     
Dan Heberden 07.06.2010 20:00
quelle

Tags und Links