• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Einschränkungen Registrierungs-Seite

sebjel

Neues Mitglied
Hallo,

ich bastele gerade an der Registrierungsseite einer Website und überlege, welche Einschränkungen ich treffen muss, damit ich sicher vor Hacks oder was auch immer bin.

Ich frage vom Nutzer den Vor- und Nachnamen sowie die E-Mail ab, außerdem gibt er sich ein Passwort, das er auch wiederholen muss.

Als Einschränkungen ist mir bis jetzt Folgendes eingefallen:
- jedes Feld muss ausgefüllt werden
- Vor- und Nachname: jeweils bis maximal 30 Zeichen, es sind nur Buchstaben erlaubt
- hier nutze ich einfach die Funktion FILTER_VALIDATE_EMAIL
- Passwort: min. 6 Zeichen, es muss ein Buchstabe und eine Zahl vorkommen

Sollte ich beim Passwort auch Sonderzeichen ausschließen? Welche schließt man da aus und wieso werden diese ausgeschlossen?

Danke schonmal für eure Hilfe!
 
Werbung:
Ich baue auch prinzipiel ein HoneyPot ein: https://de.wikipedia.org/wiki/Honeypot
Ich denke das geht hier etwas zu weit. Ich würde den Input, wenn du ihn in einer Datenbank speicherst auf jeden Fall escapen (z.b. http://php.net/manual/de/mysqli.real-escape-string.php desweiteren oder mit prepared Statments arbeiten). Und wenn du ihn später wiedergibst auch vor xss schützen. https://de.wikipedia.org/wiki/Cross-Site-Scripting

Wenn ich etwas vergessen habe berichtigt mich bitte ^^
 
Werbung:
Natürlich aber ob der Fragesteller über das Know How verfügt ist fraglich, hinzu kommt das doch wesentlich neinfacher ist die IP nach so und so vielen Versuchen auszusperren? Oder liege ich da falsch?
 
Was ist denn an einem HoneyPot kompliziert? Kann es sein, dass dir nicht klar ist, was das ist?

Und davon ab, Bots wechseln leider ihre IP-Adresse
 
Werbung:
Natürlich ist mir das bewusst ^^ Aber ich halte davon nicht viel da ich unteranderem die Gesetzteslage nicht kenne und ich ein ReCaptcha bevorzuge, da hier erstens weniger Rechenaufwand benötigt wird und zweitens ich nicht davon ausgehe das hier Daten über Angriffe gesammelt werden wollen... Aber dazu muss ich sagen das mir in dem Gebiet tatsächlich etwas die Erfahrung fehlt.
 
Du weißt definitiv nicht, was ein HoneyPot bei Formularen ist. Da gibt's nichts mit Gesetzeslage und auch kein Rechenaufwand!

Unter einem HoneyPot versteht man ein Input-Feld, dass per externem CSS unsichtbar gesetzt wird. Wenn dann dem PHP-Script ein Wert übergeben wird, kannst du sicher sein, dass ein Bot am Werke ist. Denn Bots füllen in aller Regel alle Felder aus, auch hidden-Fields.
 
Tut mir leid dir widersprochen zu haben, da hast du natürlich Recht, ich bin von deinem Wikipedia Artikel ausgegangen. Da hast du natürlich Recht, ich bin davon ausgegangen das du vorhast den Angreifer auf eine "gleiche" Seite weiterzuleiten. Manchmal sollte man einfach auf die wesentlich erfahrenen Personen vertrauen!

Danke für die Erklärung und noch einen schönen Abend,
Jan-Phillip Oe.

P.S. dein Spruch ist echt gut ;)
 
Werbung:
.....Ich würde den Input, wenn du ihn in einer Datenbank speicherst auf jeden Fall escapen....
Escapen ist keine Option, es sein denn man möchte eine Seite mit SQL-Injection erstellen. Folglich ist das Pflicht und Alternativlos.
....Und wenn du ihn später wiedergibst auch vor xss schützen.....
XSS zu vermeiden ist schon deshalb notwendig, da es rechtlich relevant sein könnte, man ist ja auch für den Mist, den man online stellt verantwortlich.

Sorry, aber du könntest auch schreiben, dass Syntax, SQL und Rechtschreibfehler vermieden werden sollten. ;)
 
Vielen Dank für die vielen Antworten!

Ich habe mich noch weiter mit dem Thema befasst und Folgendes gefunden:

habe von der Funktion preg_match gelesen, in der man bestimmte Zeichen angeben kann, auf die dann der jeweilige String untersucht wird.

In meinem Beispiel wäre das für Vorname und Nachname dieser hier:
$string_exp = "/^[A-Za-z .'-]+$/"

und für die E-Mail diese hier:
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'

Würde dies mein Problem lösen?

Ich habe außerdem noch dieses hier gefunden, womit auch Umlaute, Akzente und alle möglichen Unicode-Symbole abgedeckt werden sollen:
$string_exp = '/^((\p{L}\p{M}*)|(\p{Cc})|(\p{P}\p{P}\p{N}.{3})|(\p{N})|(\p{Zs}))+$/ui'

Hier könnte ich aber eine Erklärung gebrauchen, da ich leider nur diesen Code-Schnipsel finden konnte und mir definitiv nicht erklären kann, was dieser aussagt. :D

Für Bots hatte ich vor, einen ReCaptcha einzubinden, bin ich damit vor jeglichen Bots oder ähnlichem geschützt oder sollte ich weitere Vorsichtsmaßnahmen treffen (z.B. wie hier besprochen escapen oder Schutz vor XSS)?
 
Werbung:
Zuerst einmal hat XSS und das escapen von frei wählbarem Input des Nutzers nichts mit Bots zu tun!

Bei XSS handelt es sich zum Beispiel um einen Weg JavaScript Code später wo die Werte ausgegeben werden auszuführen. Dazu müssen nicht mal die <script></script> Tags verwendet werden! Es gibt noch viele andere Möglichkeiteb die ich selber nicht alle kenne, deshalb würde ich dir auch empfehlen eine bestehende Funktion zu verwenden wie htmlspecialchars();. (bin mir aber nicht sicher ob diese Funktion ausreichend Schutz bietet, lese dazu https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet ).

Escapen dient dazu z.B. einer SQL Injektion vorzubeugen, damit kann man die Datenbank Abfrage manipulieren und so an geheime Daten kommen. Dafür gibt es die Funktion mysqli_real_escape_string(); oder wie oben erwähnt prepared Statements.

Escapen ist keine Option, es sein denn man möchte eine Seite mit SQL-Injection erstellen. Folglich ist das Pflicht und Alternativlos.

XSS zu vermeiden ist schon deshalb notwendig, da es rechtlich relevant sein könnte, man ist ja auch für den Mist, den man online stellt verantwortlich.

Sorry, aber du könntest auch schreiben, dass Syntax, SQL und Rechtschreibfehler vermieden werden sollten. ;)
Genau danach hat er doch gefragt? Ich habe nur auf Fehler hingewiesen die ich an meiner Seite vor Jahren berichtigen musste
 
Zurück
Oben