intelligentere (content-)filter für formular eingaben in php

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

intelligentere (content-)filter für formular eingaben in php

Beitrag von startx » 23.04.2006 09:07:09

also in regelmässigen abständen muss ich irgendwo die
eingaben von formularen auf ihren sinngehalt überprüfen.

bei email adresse, telefon und ähnlichem ist das nicht so schwer, da gibt
es schöne reguläre ausdrücke. schwieriger ist das z.b. schon bei namen.

okay, mindestlänge angaben, zahlen und sonderzeichen raus, das geht noch.
wonach ich aber suche ist ein etwas intelligenterer filter, der untersuct ob
blödsinn eingegeben wurde. z.b. wird es kaum namen geben mit doppel "ß" oder
mehr als 5 konsonanten hintereinander.

ich denke mir irgendjemand der mehr von sprachanalyse versteht als ich
wird sich mit sowas schonmal beschäftig haben, nurfinde ich leider nichts im netz.
ist jemandem hier sowas schon einmal begegnet?

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 25.04.2006 11:09:04

hallo,

vor genau dieser frage stand ich auch vor kurzem und bin zu folgenden entschluss gekommen:

ich überprüfe lediglich auf sonderzeichen, nummern und länge ...

Du solltest bedenken das, je komplizierter ein prüf-mechanismus ist, desto höher die gefahr
das man den server durch DOS penetrieren kann. Du solltest, wenn du wirklich vorhast eine
intensive prüfung vorzunehmen, einige sicherheitsvorkehrungen einbauen(z.b. mod evasive).
Dazu kommt auch noch die tatsache, das es indianische völker auf diesem planeten gibt,
dessen namen mehr als 3 aufeinanderfolgende konsonanten besitzt ... daher viel spass beim reg-exen ;)
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 25.04.2006 12:47:27

Bedenke, dass foo_bar+wurz@bla.com auch eine gültige eMail-Adresse sein kann.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 25.04.2006 13:07:13

das es indianische völker auf diesem planeten gibt,
dessen namen mehr als 3 aufeinanderfolgende konsonanten besitzt
schon richtig, aber beid en meisten projekten ist der einzugsbereich ziemlich klar, und
ein ortsname in dland der mit dreifach konsonant anfängt ist eher ungewöhnlich.
gleich gilt für namen mit mehr als vier vokalen hintereinander.

wenn jemand ein formular per dos angreift, hallte ich es für besser der server geht
leicht durch den filteraufwand in die knie als verschickt 20.000 mails mit unsinnigen inhalten oder spammt eine datenbank zu ...

Joghurt schrieb:
dass foo_bar+wurz@bla.com auch eine gültige eMail-Adresse sein kann.
deshalb gibt es ja

Code: Alles auswählen

ereg("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+)
wobei man bei der tld am ende noch strenger sein könnte. :)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 25.04.2006 13:33:08

Bei Emails muss ich nur an diesen einen regulaeren Ausdruck nach irgendner RFC denken. Der is ca. ne gute Seite lang ;)

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 25.04.2006 18:31:23

abgesehen davon gibt es aber z.b. auch anwendungen wie formulare
zur eingabe von daten in datenbanken, wo ein solcher filter die bearbeitenden
auch freundlich auf eventuelle fehler aufmerksam machem könnte.

ich weiss z.b. granicht wie ich "wenn irgendein buchstabe dreimal hintereinander vorkommt"
in reg ex ausdrücke.

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 25.04.2006 19:20:53

Mal überlegen.
Keine Sonderzeichen und Zahlen.
"ß" ist in Namen mehr als ungewönlich (ich kenne keinen) allso garnicht erlauben oder zumindest nicht am Anfang des Namens
Ein Name sollte am Anfang gross geschrieben sein und an sonsten klein (außer es ist ein Doppelname, dann soll nach einem Trennzeichen (\s oder -) auch wieder großgeschrieben werden.)
So Sachen wie "aaa" und "sssss" sollte es auch nicht geben maximal 2 gleiche Buchstaben.

Ich würde daraus sowas machen:

Code: Alles auswählen

/[^\w\s-ÖÄÜöäüß]|[A-ZÖÄÜ]{2,}|[a-zöäüß][A-ZÖÄÜß]|(:?^|\s|-)[a-züöäß-\s]|(.)\1{2,}/
Das dürfte "wahr" zurückliefern wenn etwas an der Eingabe "falsch" ist. Aber ob das nicht etwas zu streng ist, weiß ich nicht.

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 26.04.2006 01:07:12

ToPeG hat geschrieben:Ich würde daraus sowas machen:

Code: Alles auswählen

/[^\w\s-ÖÄÜöäüß]|[A-ZÖÄÜ]{2,}|[a-zöäüß][A-ZÖÄÜß]|(:?^|\s|-)[a-züöäß-\s]|(.)\1{2,}/
Das dürfte "wahr" zurückliefern wenn etwas an der Eingabe "falsch" ist. Aber ob das nicht etwas zu streng ist, weiß ich nicht.
Und was ist mit Namen wie "François"?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 26.04.2006 03:16:11

Ich sagte doch, ist nicht ideal. Aber für 70% aller Deutschen Namen dürfte es wohl funktionieren. Mach doch einen besseren Vorschlag. :-)

Antworten