Gibt es Browser, die maxlength nicht unterstützen?
Ich habe ein contest entry-Seite auf meine Unternehmens-website. Um an dem Wettbewerb teilzunehmen, erstellen Sie ein login, welches Sie einfach eine E-Mail und eine 4-stellige pin. Hier ist das PIN-Feld:
<input type="password" name="contest_pin" id="contest_pin" maxlength="4" />
Wenn der Benutzer das Formular Absenden, wird das Konto erstellt wird in unserer Datenbank ein, und dann bekommen Sie eine E-Mail (das hab ich kopiert), enthält die E-Mail-Adresse und PIN, die Sie erstellt haben.
Hier ist das Problem: in allen browser, die ich getestet habe (Safari/Chrome/Firefox auf Mac, Chrome/Firefox auf Linux, IE7/8/9 unter Windows) kann ich NICHT geben Sie mehr als 4 Ziffern in das PIN-Feld. Und doch, einige der E-Mails, die ich erhalten habe, zeigen, dass der Benutzer erstellt eine pin mit mehr als 4 Zeichen.
Wie ist das möglich? Gibt es Browser, die nicht unterstützen, maxlength? Ich habe nicht getestet in Opera, oder auf einem der mobilen Browser. Es ist nicht eine große Sache, wenn Ihre pin mehr als 4 Ziffern, wird die Datenbank aufzunehmen. Ich Frage mich nur, wie Sie es geschafft, um maxlength.
BEARBEITET, UM HINZUFÜGEN
Gibt es zu viele Antworten, die im Grunde sagen, die gleiche Sache für mich zu gehen individuell auf alle von Ihnen. Ich WEIß, ich sollte das tun, server-seitige Validierung für etwas wichtiges, und wir müssen PHP-code bereinigen unsere Daten, und wenn es war enorm wichtig, ich würde auch PHP-code die Durchsetzung der 4-stellige Grenze. Es ist nicht so, dass uns wichtig, dass Sie nur 4 Zeichen, daher habe ich nicht durchgesetzt. Ich Frage mich nur, warum die maxlength-Eigenschaft nicht zu tun, was es ist entworfen, um zu tun, die verhindern, dass Benutzer die Eingabe mehr als eine bestimmte Anzahl von Zeichen. Für diejenigen von Euch, die vorgeschlagen, dass schädliche Skripts oder Firebug, kann ich zu 100% sicher, dass dies nicht der Fall ist. Nur registrierte Nutzer unserer Website (die begrenzt ist auf eine ganz Besondere Unternehmens-Mitgliedsliste) kann auch auf die eintragungsseite, und ich kann garantieren, dass keiner der etwa 100 Personen auf dieser Liste werden bewusst versucht zu umgehen, ist ein input-type-Eigenschaft.
InformationsquelleAutor der Frage EmmyS | 2011-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie sehr wahrscheinlich bots sind, die Lesen Feldnamen und erstellen von GET-und POST-Anfragen basierend auf diese, anstatt die HTML-form, wie ein normaler menschlicher Benutzer.
Dies ist der Grund, warum die client-seitige Validierung der form, die ist nie genug, um sicherzustellen, dass die Daten korrekt sind. Client-seitige Validierung ist schön wie es ist entgegenkommend für end-Benutzer, aber es ist nicht in der Lage zu verhindern, dass fehlerhafte Daten von der Ankunft an Ihrem server direkt vor der Haustür.
Als ein Beispiel, sagen wir, ich habe ein input Feld in eine form, deren Aktion BEKOMMEN. Mein input-Feld maxlength ist 4. Wenn ich drücken Sie senden, sehe ich die URL endet mit
?field=1234
. Es gibt nichts stoppen mich von der Aktualisierung, die URL zu?field=123456789
und drücken Sie die EINGABETASTE. Ähnliche Dinge kann man mit POST-Aktionen, sondern ein Werkzeug ist dafür nicht nötig.InformationsquelleAutor der Antwort Welbog
Ich glaube, dass jeder browser es unterstützt, hier ein paar links für Referenz :
Maxlength | SitePointReference
Maxlength | W3 Schools
Natürlich gibt es Wege um diese - sollten Sie sicherstellen, dass Sie IMMER ausreichende server-seitige Validierung, wie client-Seite in der Regel nicht ausreichend.
InformationsquelleAutor der Antwort Rion Williams
Alle Browser unterstützen maxlength. Doch dieses Attribut kann einfach entfernt/geändert werden, mithilfe von DOM-Methoden, oder, zum Beispiel, mit Firefox die Web Developer Toolbar.
InformationsquelleAutor der Antwort duri
Ich würde untersuchen, die BENUTZERAGENT-und REFERER-Header im Zusammenhang mit diesen Aktivitäten der Benutzer. Vielleicht ein böswilliger Benutzer Formulare programmgesteuert zu umgehen, die von browser-Restriktionen, nur um zu überprüfen, Ihre Verteidigung am perimeter. Wenn ja, sollten Sie sehen, einige Muster da.
Jedenfalls diese Vermutungen beiseite,
maxlength
sollten nicht so behandelt werden, als ein Mittel der Sicherung der input. Alles client-Seite ist nicht unter Ihrer Kontrolle, es existiert lediglich, um die Benutzeroberfläche intuitiver, interaktiver. Sie sollten immer prüfen, ob alles auf dem server. In diesem Fall wird die PIN aus 4 zahlen, andernfalls verwerfen Sie die Eingabe. Die goldene Regel ist, zu behandeln, alle Benutzereingaben als feindlich und gründlich überprüfen Sie auf dem server.InformationsquelleAutor der Antwort
Im Allgemeinen, versuchen, durchzusetzen, Regeln für die Benutzer-Eingabe erfolgt auf client-Seite ist eine schlechte Idee. Ich hatte ein Erlebnis, wo wir den Auftrag übernommen hatte, einige arbeiten, einige Programmierer und Ihre Idee, die Desinfektion der Benutzer-Eingabe war es so, dass die Nutzer konnte nicht Eingang mehr als 10 Zeichen in einem bestimmten Feld. Eine schnelle firebug ändern und, oh, schau, ich kann drop die server-Datenbank mit einigen minimalen SQL-injection.
Wenn ich Sie wäre würde ich prüfen, die maximale Länge, mit was auch immer Skript fügt den Benutzer Informationen in Ihrer Datenbank und return form-überprüfungs-Fehlern, wenn die Benutzer-Eingabe überschreitet die maximale Länge angegeben.
InformationsquelleAutor der Antwort photoionized
Dies ist die Art von Sache, die Sie sollten sich trotzdem überprüfen der server-Seite, obwohl die clients werden fast immer unterstützt. Es ist sehr leicht zu bekommen, um eine maxlength-Firefox-Entwickler-Symbolleiste enthält eine option, Sie zu "Entfernen" Maximale Länge", oder eine Anfrage können Sie sich sehr einfach von hand bearbeitet. Ich glaube fast, dass du in der Vergangenheit bekommen konnte, um eine maxlength-in einem der Browser einfach durch die Verwendung Ausschneiden und einfügen(zB browser nicht zulassen würde, dass Sie mehr Zeichen eingeben, aber wenn Sie eingefügt einen Wert, der war 5+ - Zeichen eingeben, mit der Sie alle), aber ich kann mich nicht erinnern, speziell die browser, die ich sah, dass auf...
InformationsquelleAutor der Antwort Chris Shaffer