Ist die JavaScript-Validierung schlecht?

68

Es ist lange her, dass wir unsere Formulare mit JavaScript validiert haben. Ich bin sicher, dass dies bei den meisten anderen Entwicklern der Fall sein muss.

Frage:

Was ist, wenn der Benutzer (oder wahrscheinlich ein Bösewicht) JavaScript deaktiviert?

Du bist verloren!

  • Lohnt sich die JavaScript-Validierung?
  • Sollten wir es jetzt jemals benutzen?
  • Gibt es dafür Lösungen?

Korrigieren Sie mich, wenn ich falsch liege.

Sarfraz
quelle

Antworten:

164

Lohnt sich die JavaScript-Validierung?

Ja, da dies eine bessere Benutzererfahrung bietet und die Bandbreite schont.

Sollten wir es jetzt jemals benutzen?

Ja, aus den oben genannten Gründen.

Gibt es dafür Lösungen?

Ja, verwenden Sie auch die serverseitige Validierung.

Darin Dimitrov
quelle
Serverseite auch? viel arbeit dann gehst du nicht nur mit serverseite?
Sarfraz
6
Dies ist der Grund, warum der Validierungsteil des .NET Frameworks beim Hinzufügen von Validatoren sowohl Javascript- als auch serverseitigen Validierungscode erstellt.
Jan Jongboom
26
+1: Sie müssen ohnehin vollständig auf dem Server validieren, aber die JS-Validierung macht die Dinge für die Benutzer viel schöner. Ihr Kommentar, Sarfraz, ist ein bisschen so, als würde man sagen: "Wir müssen eine Befehlszeilenschnittstelle für Skripte bereitstellen? Warum sollte man sich die Mühe machen, darüber eine GUI zu erstellen?"
Andrzej Doyle
10
+1, js Validierung dient nur der Bequemlichkeit, die serverseitige Validierung ist unverzichtbar !! Dies ist normalerweise die größere Sicherheitslücke bei Neulingenprojekten!
Strae
1
Ein Grund dafür, dass Entwickler nicht gerne sowohl auf dem Client als auch auf dem Server validieren, liegt darin, dass dies gegen das DRY-Prinzip zu verstoßen scheint. Dies kann gemindert werden, indem entweder derselbe Validierungscode auf dem Server und auf dem Client verwendet wird (möglich, wenn GWT oder Node.js verwendet werden) oder die serverseitigen und clientseitigen Prüfungen aus derselben Quelle generiert werden (z. B. basierend auf Anmerkungen) auf Java-Modellklassen).
Arnout Engelen
28

Was ist, wenn der Benutzer (oder wahrscheinlich ein Bösewicht) Javascript deaktiviert?

Wie gesagt: Verlassen Sie sich einfach nicht auf den Kunden. Mach das niemals. Überprüfen Sie alles auf dem Server erneut.

Sollten wir es jetzt jemals benutzen?

Ja - der Benutzer sieht also sofort, was falsch ist. Andernfalls musste er zuerst die Daten zurückschicken, was eine Weile dauern kann. Übrigens reduzieren Sie den Datenverkehr zu Ihrem Server.

Es ist einfach intuitiver.

// EDIT: BTW: Die ASP.NET ValidationRules enthalten meines Wissens sowohl eine clientseitige als auch eine Server-Validierung.

Matthias
quelle
17

Die Javascript-Validierung ist gut, da sie eine bessere Benutzererfahrung bietet.

Sie sollten sich jedoch niemals darauf verlassen und unabhängig davon auf dem Server validieren.

Cletus
quelle
10

Wenn Sie Zeit sparen möchten, verwenden Sie nur die Serverseite. Wenn Sie eine bessere Leistung und Benutzererfahrung wünschen, fügen Sie anschließend eine clientseitige Validierung hinzu. Verlassen Sie sich aus den von Ihnen angegebenen Gründen niemals auf die clientseitige Validierung. Alle kritischen Überprüfungen sollten auf dem Server erfolgen ... auch wenn sie auf dem Client dupliziert wurden.

Piep Piep
quelle
10

JavaScript verbessert Benutzer - Interaktion für Ihr Produkt oder eine Dienstleistung. Die Benutzerinteraktion (Benutzereingabe und Maschinenreaktion oder umgekehrt) ist ein wesentliches Merkmal unserer Anwendungen. Wie wir alle erfahren haben, werden Produkte interaktiver als je zuvor. Und dieser Interaktionsteil kann (nur) in JavaScript ( ActionScript für Flash Player ) erstellt werden. Wir sind uns alle einig - es gibt immer einen kalkulierten Arbeitsaufwand, der an die Client-Seite (Maschine) übertragen werden kann, um Anrufe zu vermeiden, ohne sie zum Senden an die Server zu stören. Es gibt viele, viele Anwendungen, die stark von Client-Skript-Skripten abhängig sind. Und wenn sie festgestellt haben, dass Sie die erforderlichen Skripte nicht zulassen, haben sie darum gebeten und eine Nachricht hinterlassennoscriptEtikett. Aber ich denke, jeder möchte, dass es aktiviert wird, da wir alle einen Tab mit Google Mail, Facebook usw. starten.

Dies sollte jedoch nicht ignoriert werden, da wir jede einzelne Gelegenheit (Publikum / Kunde) nutzen möchten und es zumindest besser ist, mit ihnen zu arbeiten, als auseinanderzufallen. Es funktioniert noch!

Als Benutzer der Microsoft Development Platform gibt es auf der .NETPlattform eine bequeme Lösung . Das erfordert keine doppelte Anstrengung in solchen Fragen. Nutzen Sie Ihre clientseitige Validierung, während die Skripterstellung mit Page.Validate()und deaktiviert istPage.IsValid .

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack) {
        Page.Validate(); // If you missed, then you got the second chance ...
    }
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (Page.IsValid) { // Confirm you do a proper validation before moving to perform any process
        Response.Write("Done!");
    }
}

Ich hoffe das wird helfen.

Ramiz Uddin
quelle
1
+1 danke für die Antwort, ich habe jetzt eine ziemlich viel bessere Idee :)
Sarfraz
6

Bei der clientseitigen (Javascript) Validierung geht es um Benutzerfreundlichkeit, sonst nichts. Wenn die Kosten für die Implementierung die wahrgenommene Steigerung der Benutzerfreundlichkeit nicht wert sind, nehmen Sie sich keine Zeit dafür. Heutzutage ist das allerdings ziemlich einfach!

Ich glaube jedoch nicht, dass Sie auf eine serverseitige Validierung verzichten können, da dies das einzige ist, das Ihnen Sicherheit bietet.

Rob Fonseca-Ensor
quelle
6

Die Verwendung von JavaScript ist nicht falsch. Wir benutzen es seit langer Zeit. Es wird zum Anwenden clientseitiger Validierungen verwendet.

Trotzdem sollten wir eine serverseitige Validierung implementieren, damit ein Bösewicht die Anwendung nicht beschädigen kann.

Riten
quelle
5

Wenn Sie aus diesem Thema nur eines lernen, lassen Sie es so sein:

Vertrauen Sie unter keinen Umständen den Daten des Browsers und überprüfen Sie die Anforderungsdaten immer auf der Serverseite.

Sollten wir es jetzt jemals benutzen?

Ja definitiv. Sie müssen kein leeres Feld auf der Serverseite überprüfen. Es geht nicht darum, die Verfügbarkeit einer E-Mail zu überprüfen (Eindeutigkeit der E-Mail). Wenn Sie dieses leere Feld trotzdem ablehnen, ist es sinnlos, es an den Server zu senden und den Server dazu zu bringen, zusätzliche Arbeit dafür zu leisten.

Gurkan
quelle
5

Sie müssen es auf der Serverseite validieren. Javascript ist gut, um das Formular zu validieren. Benutzer können jedoch Javascript deaktivieren oder ein anderes Javascript verwenden, um es zu hacken. Daher ist die Validierung auf der Serverseite ein Muss.

Syler
quelle
4

JavaScript ist nützlich für die clientseitige Validierung. Aber Sie können sich nicht nur auf sie verlassen. Sie müssen die serverseitige Validierung für die veröffentlichten Daten verwenden. JavaScript verhindert nur unnötige Beiträge auf dem Server.

Ozan BAYRAM
quelle
4

Sie können die server- und clientseitige Validierung mithilfe eines Frameworks, das beide unterstützt, problemlos durchführen. In der Vergangenheit habe ich für ASP.NET die Peter Blum-Validatoren verwendet:

http://peterblum.com/

Auf diese Weise legen Sie die Validierungssteuerelemente auf Ihrer Seite ab, verbinden sie mit den Eingaben (Textfelder, Dropdown-Listen usw.) und geben die Validierungseigenschaften an (Mindestlänge, erforderlich, Fehlermeldung usw.). Wenn die Seite ausgeführt wird, spuckt das Framework äquivalenten Code sowohl für den Client (JavaScript) als auch für den Server (ASP.NET) aus, um Ihre Validierung durchzuführen.

Ohne einen solchen Rahmen kann die Validierung mühsam sein, wie andere Poster hervorgehoben haben.

Es würde mich interessieren, etwas Ähnliches für PHP oder andere Technologien zu wissen.

Mike Chamberlain
quelle
4

Sie sollten mehrere Validierungsebenen haben.

Validierung auf der Client-Seite

Dies ist auf jeden Fall nützlich, da die Validierung durchgeführt werden kann, ohne zum Server gehen zu müssen. Anforderungen werden nach der Validierung an den Server gesendet - spart Datenverkehr.

Validierung auf der Serverseite

Wenn Javascript deaktiviert ist, sollte der Server auch eine Schutzstufe enthalten - Validierung, um fehlerhafte Anforderungen nicht zuzulassen.

oneiros
quelle
3

In einer mehrschichtigen / serviceorientierten Umgebung sollte die Validierung auf mehreren Ebenen erfolgen, um eine bessere Wiederverwendung zu ermöglichen und gleichzeitig eine sichere Anwendung aufrechtzuerhalten. Die Validierung auf der Clientseite, sei es in einer Desktop-App oder auf einer Website / Anwendung, sollte für eine bessere Benutzererfahrung sorgen, um jedes Mal Postbacks auf dem Server zur Validierung zu verhindern, was mehr Bandbreite und Benutzerzeit kostet. Wenn die clientseitige Validierung nicht vollständig in das Front-End verschoben werden kann, sollten Sie Ajax für ein teilweises Postback zu einer serverseitigen Validierungsroutine verwenden, während Sie eine bessere Kundenerfahrung beibehalten und es einem Programmierer ermöglichen, die Validierungsregeln zentral zu verwalten.

Zweitens auf der Client-Seite, aber was noch wichtiger ist ist , Server - Side - Code sollte die Daten überprüfen , bevor es über eine Datenschicht oder Übergabe an einem anderen Server Side - Verfahren / Service, zu beschäftigen Geschäftsregeln rund um die Daten und verhindert den Fehler in der Datenintegrität persistierenden. Schließlich sollte die Persistenzschicht selbst (die unmittelbare Schnittstelle zur Datenbank oder zu einem anderen Speichermechanismus) die gespeicherten Daten validieren, um wiederum Fehler in der Datenintegrität und möglicherweise weitere Geschäftsregeln zu vermeiden. Das Letzte, was Sie wollen, ist ein Datenspeicher mit nutzlosen Daten.

Durch die Verwendung dieser Methode bleiben Ihre Daten sicher und integer. Bei erneuter Wiederverwendung Ihrer Persistenzschicht, Ihrer Datenschicht oder Ihrer Front-End-Präsentation auf Ihrer eigenen Website (oder über einen Webdienst, eine Desktopanwendung oder eine mobile App) sind diese Validierungsroutinen bereits vorhanden und können vorhanden sein wieder eingestellt werden. Dies sollte sich für Sie allein, Ihre Kollegen und Ihr Management als sehr vorteilhaft erweisen, wenn Sie in einem Team arbeiten.

nealkernohan
quelle
0
Is JavaScript validation worth of it?

Nun ja, es ist. Durch die Verwendung der JavaScript-Validierung können Sie problemlos alle Arten von Informationen über die Client-Site abrufen, während die JavaScript-Validierung eine bessere Benutzererfahrung bietet

   Should we ever use it now?

Ja, Sie können, weil Benutzer dort Fehler sehen oder was sie in Echtzeit falsch machen

Are there any solutions to this?

Ja, Sie können auch die serverseitige Validierung verwenden. Manchmal dauert es jedoch länger. Es ist auch unsicher

Ferrakkem Bhuiyan
quelle