2010-07-03 6 views
9

Was ist die übliche Praxis der Validierung von Eingaben? Mit anderen Worten, prüfen Sie die Eingabeüberprüfung auf der Clientseite, auf der Serverseite oder auf beiden Seiten?Best Practices für die Eingabeüberprüfung in ASP.NET?

Auch wenn Leistung für mich entscheidend ist, würde nur die clientseitige Eingabevalidierung für meine Website ausreichen, ohne irgendwelche Sicherheitsrisiken darzustellen?

Antwort

11

Immer mindestens serverseitige Validierung durchführen. Wenn Sie die Benutzererfahrung verbessern möchten, könnte die clientseitige Validierung hilfreich sein. Darüber hinaus können Sie unnötige Anforderungen an den Server vermeiden.

Nur die clientseitige Validierung ist nicht ausreichend und kann leicht umgangen werden, indem beispielsweise Javascript deaktiviert wird.

Ich würde Ihnen empfehlen, immer mit der serverseitigen Validierung zu beginnen, und sobald Sie es getestet haben, können Sie die clientseitige Validierung aktivieren.

2

Im Allgemeinen auf beiden Seiten. Die Client-Seite kann entweder absichtlich oder unschuldig (mit der Prävalenz von noscript) umgangen werden, ist aber aus Gründen der Benutzerfreundlichkeit wert.

Ob es ein Sicherheitsrisiko darstellt. Wofür verwenden Sie die Benutzereingabe und was ist der aktuelle Charakter Ihrer Validierung?

Wenn nur überprüft wird, ob jemand Pflichtfelder in einem Formular ausgefüllt hat, ist es wahrscheinlich unwahrscheinlich, dass ein Sicherheitsrisiko besteht.

1

Es muss mindestens eine serverseitige Validierung verwendet werden, da die cliaseitige Validierung relativ einfach umgangen werden kann.

Wenn Sie eine bessere Benutzererfahrung wünschen, verwenden Sie auch die clientseitige Validierung. Dies erhöht auch die Leistung, da die Anzahl der HTTP-Anforderungen an den Server reduziert wird, da ungültige Formulare nicht an den Server gesendet werden.

4

NICHT AUF CLIENT SIDE VALIDATION VERTRAUEN !!!
Es ist nur für den ehrlichen Benutzer da. Der unehrliche Benutzer kann es in kürzester Zeit umgehen.

Wenn ich Javascript ausschließe, kann ich deine App hämmern. Immer serverseitige Validierung setzen in ... es ist nicht so schwer

Webformulare

''# VB 
If Page.isValid Then 
    ''# submit your data 
End If 

// C# 
if(Page.isValid) { 
    // submit your data 
} 

MVC

''# VB 
If ModelState.IsValid Then 
    ''# submit your data 
End If 

// C# 
if(ModelState.IsValid) { 
    // submit your data 
} 

Sobald Validierung Serverseite funktioniert, dann gehen Sie vor und fügen Sie die Validierung der Client-Seite. Es macht die Erfahrung für den Benutzer besser

1

Am häufigsten wird die Client- und Serverseite Validierung verwendet.

würde nur die clientseitige Eingabevalidierung für meine Website ausreichen, ohne Sicherheitsrisiken darzustellen?

Nein, Sie sollten auch die serverseitige Validierung verwenden. Es ist ziemlich einfach, Client-Validierung mit (zum Beispiel) Firebug zu entfernen. Offensichtlich kann der Übeltäter nach dem Entfernen der Client-Seite die Daten an den Server senden. Daher ist eine serverseitige Validierung dringend erforderlich.

4

Eine Sache, die ich empfehlen würde, ist mit FluentValidation, xVal und JQuery zusammen basierten Client- und Server-Seite Validierung durchgeführt wird auf den gleichen Regeln.

FluentValidation ist ein regelbasiertes Framework, das .net-Objekte auf der Serverseite überprüft. Es kommt mit einem Regelanbieter für xVal, der ein anderes Framework ist, das es Ihnen ermöglicht, Ihre Auswahl von serverseitigen und clientseitigen Validierungsframeworks zu verknüpfen. Es unterstützt die Generierung von JQuery-Validatoren auf der Clientseite