Frage

Ich habe ein paar HTML-Formulare und implementiere die Filterung dieser Felder auf der serverseitigen (mit Java-Servlets), und ich habe mich gefragt, was ich zulassen sollte oder was ich nicht zulassen sollte. Für E-Mail-Adressen entferne ich alles, was zu diesem entspricht:

[^A-Za-z0-9._%-@]

Was sind einige ähnliche Regeln, die ich auf Namen, Nachricht und Telefonnummer anwenden könnte.

Ich gehe davon aus, dass <und> als <und> entkommen sollte, was soll ich sonst noch ersetzen?

Gibt es in dieser Richtung Empfehlungen für die maximale Länge für solche Felder?

War es hilfreich?

Lösung

Sie müssen entkommen & zu &amp; Zuerst, dann < zu &lt;. Entgegen der landläufigen Meinung ist es nicht nötig fliehen > zu &gt;. Es besteht keine Notwendigkeit, die Klammer zu schützen, die schließt ein HTML -Tag, wenn es keine Möglichkeit gibt offen eines.

Ihr Aufruf, ob es entkommen sollte, bevor Sie in die Datenbank geschrieben werden, oder ob Sie sie jedes Mal aus der Datenbank gelesen werden sollten. Es wird schneller sein. Wenn Sie dies auf der Ausgangsseite tun, wird es sicherer unauslösch Sachen, bevor Sie es an eine andere App senden. Ich persönlich würde den Leistungspreis und das Unausgleich auf der Ausgangsseite bezahlen. Caching kann helfen.

Der Rest der Validierung, die Sie tun möchten, hängt von der Art der Daten ab. Für eine E-Mail-Adresse überprüfen Sie, ob sie eine hat @ und mindestens einer . Senden Sie dann die Adresse eine Test-E-Mail, danach, wenn es Ihnen wichtig ist, ob es gültig ist oder nicht. Es ist so gut wie unmöglich, eine E-Mail-Adresse vollständig weiter zu validieren, und selbst wenn die Adresse syntaktisch gültig ist, bedeutet dies immer noch nicht, dass sie geliefert werden kann. In ähnlicher Weise erlauben Sie fast alles als URL und dann Versuchen Sie, es abzurufen um zu sehen, ob es gültig ist. Verwenden Sie für eine Abrechnungs-/Versandadresse den USPS -Webdienst, um die Daten im besten Format zu validieren und zu erhalten (für US -Adressen).

Andere Tipps

Sie sollten alles für Namen zulassen. Betrachten Sie "O'Malley" oder "Hudson-Walker". Einige Sprachen (wie Salish) enthalten Zahlen, sodass Sie "SQWXWU7MISH" haben können. Dann gibt es Akzentfiguren, Hebräisch, kyrillisch, griechisch, chinesisch, koreanisch und sogar der Musiker, der früher als Prinz bekannt war.

Nachrichtentext sollte ähnlich nicht eingeschränkt sein. Wenn Nachrichten HTML enthalten können, müssen Sie die HTML (mit einem echten HTML -Parser) analysieren und Whitelisten anwenden und zuschreiben, um nur Dinge zuzulassen, die Sie erwarten.

Die Telefonnummern sollten ebenfalls an der freien Form ziemlich nahe sein. Die nordamerikanischen Formate unterscheiden sich von europäischen, einige Leute möchten "(555) 555-5555" sagen, während andere "555-555-5555", einige Telefonnummern Verlängerungen haben und einige nicht.

Die einzige Codierung, über die Sie sich bei der Eingabe Sorgen machen sollten, ist, dass alles in UTF-8 (einschließlich Ihrer Datenbank) ist. Und wenn Sie mit Ihrer Datenbank sprechen, versuchen Sie nicht, etwas selbst zu codieren, und verwenden Sie den Zitatmechanismus und die Platzhalter des Datenbankfahrers.

Die Längen sollten im Allgemeinen viel größer sein, als Sie glauben, dass sie Ihre erste Vermutung mit einem angemessenen Maximum so verdoppeln sollten. Der Speicherunterschied zwischen 20 Zeichen für einen Namen und 100 wird für die meisten Anwendungen nicht wichtig sein. Seien Sie also großzügig.

Sie sollten sich keine Sorgen um die HTML -Codierung bis zur Ausgabe machen und dann sollten Sie die HTML- und URL -Codierungswerkzeuge verwenden, die Ihre Umgebung unterstützt. Versuchen Sie nicht, Ihre eigenen zu erstellen.

Konstruieren Sie Ihre Inputs nicht über und seien Sie so locker und verzeihend wie möglich. Seien Sie jedoch sehr streng mit Ihren Ausgängen.

Maximale Länge: Ich wende immer eine maximale Länge auf meinen Feldern auf der Client- und Serverseite an. Die Werte stimmen mit den in der Datenbank festgelegten maximalen Werten überein.

Ich stimme dem Flucht <,> und>, <zu <.

Ich denke, es ist eine gute Angewohnheit, eine sehr gute Bestätigung zu haben. Wenn ich mit Namen, Nachricht und Telefonnummer arbeiten würde, würde ich Folgendes machen.

Machen Sie es für jedes Textfeld so, dass das Textfeld die ungültigen Werte überhaupt nicht nimmt.
Name: Aa-z
Nachricht: 'Aa-z' '0-9' '. ',' '; etc..
Telefonnummer: '0-9' zulassen keinen Speicherplatz, sondern erlauben Sie '-' ', du kannst die String-Serverseite immer analysieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top