Zum Inhalt springen

Zeilenumbrüche


thomas.haese

Empfohlene Beiträge

Hallo,

bastel gerade für ein Browsergame ein kleines Tool,

jeder Nutzer hat ein eingabefeld indem er reinschreiben kann, was in seinem Account zutun ist.

Jetzt meine Frage, wie bekomm ich es hin, dass wenn man in diesem Textfeld ENTER drückt in der HTML ausgabe ein <br> eingefügt wird, sonst muss man nämlich leider immer in seinen text ein <br> einfügen das ist sehr doof =(

Link zu diesem Kommentar
Auf anderen Seiten teilen

sonst muss man nämlich leider immer in seinen text ein <br> einfügen das ist sehr doof =(

Wenn das Möglich ist hast du ein großes Sicherheits Problem auf deiner Seite. Alle Eingaben die der Benutzer macht musst du Serverseitig prüfen und so verändern das kein Code eingeschleust werden kann da der Benutzer die Seite sonst zu beliebigen Zwecken umgestalten kann.

Sie zum Beispiel Cross-Site Scripting

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie flashpixx geschrieben hat, kannst du den eingegebenen Text entsprechend verändern

dazu musst du lediglich folgende Zeichen überprüfen

  • \r\n (die Steuerzeichen mit den Zeichencodes 13 und 10, Windows-Zeilenumbrüche)
  • \r (Steuerzeichen mit Zeichencode 13, Mac-Zeilenumbrüche)
  • \n (Steuerzeichen mit Zeichencode 10, Unix und Linux Zeilenumbruch)

ich würde dir raten, diese Überprüfung beim Ausgeben der Daten zu machen (nicht direkt nach dem eingeben)

der Unterschied macht sich dann bemerkbar, wenn man die Daten persistent ablegt (beispielsweise in einer Datebenbank):

will der Benutzer den eingegebenen Text wieder ändern und die Anpassung hat vor dem Speichern statt gefunden, sieht er keine Zeilenumbrüche, sondern "<br />"s

so ähnlich kann man auch dem XSS begegnen, auf des Guybrush Threepwood ja schon hingewiesen hat

man lässt die Eingaben erst einmal ungeprüft passieren und passt sie erst bei der Ausgabe an (es könnte ggf. schon reichen, alle "<" durch "<" und alle ">" durch ">" zu ersetzen)

dadurch lässt sich grundsätzlich kein HTML mehr einfügen, wodurch auch die Einbettung von Skriptcode nicht mehr möglich ist, dafür lassen sich HTML-Formatierungen nicht mehr benutzen

Formatierungen sollten allerdings nicht über HTML-Code eingegeben werden können, sondern eher über andere Arten der Auszeichnung, BB-Code

Link zu diesem Kommentar
Auf anderen Seiten teilen

man lässt die Eingaben erst einmal ungeprüft passieren

Autsch, ganz böses Foul.

Eingaben bzw. Daten vom Client dürfen niemals ungeprüft weiterverarbeitet werden. Selbst wenn du XSS so vielleicht umgehen kannst (was dadurch das die Daten ja auch an mehreren Stellen ausgegeben werden könnten und es dann an einer Stelle vergessen wird nicht sicher gestellt ist) gibt es noch unzähliege andere Angriffsmechanismen die sich bei so ungeschützen Webseiten ausnutzen lassen. Ein bekanntes Beispiel ist die SQL Injection.

Das einzige was du mit Benutzereingaben ungeprüft machen kannst ist sie wegwerfen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

stimmt, da muss ich dir recht geben :rolleyes:

anscheinend habe ich mich zu sehr an dem Beispiel orientiert und dadurch sowas außer Acht gelassen

ich hätte nicht schreiben dürfen, dass die Eingaben vor dem Speichern nicht geprüft werden müssen, sondern, dass sie nach dem Auslesen angepasst werden müssen (um XSS vorzubeugen, womit dies alleine also nicht alle Arten von Angriffen abwehren kann)

gegen SQL-Injection wiederum hilft es, die eingegebenen Daten for dem Versuch des Speicherns anzupassen, wobei auch wieder eine einfache Ersetzung ("'" -> "\'") ausreichend sein könnte

da es meines Erachtens eleganter ist, eine lokale Stelle zu schaffen, an die eingegebene Daten übergeben werden, damit diese gespeichert werden (bzw. allgemein eine lokale Stelle für den Zugriff auf persistente Daten), sollte diese sich um diese Anpassung kümmern (puh, da habe ich es nochmal geschafft, meine gravierend falsche Aussage gerade zu biegen ... ich sollte Politiker werden! ;D)

darauf, dass das nachträgliche Überprüfen der Daten (nach dem Auslesen aus der Datenbank und vor dem Ausliefern an den Benutzer) an wirklich jeder erdenklichen Stelle durchgeführt werden muss, an der Benutzer Daten eingeben können (und noch die ein oder andere Stelle mehr), hätte ich achten müssen (wobei das wieder ein Beweis dafür ist, dass es vergessen wird)

genauso ist das auch bei der Vorbeugung von SQL-Injections (es werden nicht immer alle Eingabefelder ausreichend überprüft)

Das einzige was du mit Benutzereingaben ungeprüft machen kannst ist sie wegwerfen ;)

also da wär ich mir nicht ganz so sicher

wer weiß schon, wer alles den Hauseigenen Müll durchsucht ;D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich versteh das Problem ehrlich gesagt nicht. Wenn in der Datenbank \r\n gespeichert wird und beim Ausgeben \r\n mit <br> replaced, ist doch alles ok? Natürlich sollte man die Eingabe vorher auf Tags, Hochkommas usw. prüfen. Aber ein \r\n ist nun wirklich nichts schlimmes...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...