thomas.haese Geschrieben 24. Juli 2011 Teilen Geschrieben 24. Juli 2011 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 =( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. Juli 2011 Teilen Geschrieben 24. Juli 2011 Das Script, das die Daten entgegen nimmt kann Linebreaks entsprechend konvertieren und einfügen / ersetzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 24. Juli 2011 Teilen Geschrieben 24. Juli 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 25. Juli 2011 Teilen Geschrieben 25. Juli 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 25. Juli 2011 Teilen Geschrieben 25. Juli 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 25. Juli 2011 Teilen Geschrieben 25. Juli 2011 stimmt, da muss ich dir recht geben 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
policies Geschrieben 27. Juli 2011 Teilen Geschrieben 27. Juli 2011 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.