HTML: Input Feld value sicher setzen

Bash, Shell, PHP, Python, Perl, CGI
amiga1200
Posts: 208
Joined: 2007-01-13 19:58

HTML: Input Feld value sicher setzen

Post by amiga1200 » 2013-03-08 10:10

Ich setze ein String aus der DB in ein Inputfeld.
<Input type='text' Name='feld1' value='$feld1' >

Sobald jemand das Zeichen ' im Text benutz, und den Datensatz wieder anschaut stimmt der Text nicht mehr.
weil Value= ' sommer' s und Winter' durch 3 ' Zeichen durcheinander kommt.
Setzt ich statt ' das Hochkommer " wird kurzerhand jemand << Das "Boot" >> schreiben, und value gibt wieder auf.

Einzigste Möglichkeit man schreibt:
value=$Feld im Imputfeld, also ohne Hochkomma, ist aber nicht HTML konform!

Wie macht Ihr das?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11616
Joined: 2003-02-27 01:00
Location: Hamburg

Re: HTML: Input Feld value sicher setzen

Post by Joe User » 2013-03-08 12:14

An HTML liegt es nicht, sondern an Deiner Anwendung (WepApp).
So wie Du es beschreibst, kann man aktuell die Input-Felder für SQL-/Code-Injections missbrauchen und somit in Deinen Server einbrechen. Du musst alle Eingaben und Ausgaben innerhalb Deiner Anwendung escapen/encoden und verbotene Zeichen ausfiltern.
Ich würde Dir an dieser Stelle das Lesen von Büchern zur sicheren Erstellung von WebApps empfehlen, da das Thema sehr umfangreich ist.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

amiga1200
Posts: 208
Joined: 2007-01-13 19:58

Re: HTML: Input Feld value sicher setzen

Post by amiga1200 » 2013-03-08 12:44

Hallo Joe User,

falsch verstanden, oder ich habe mich nicht korrekt ausgedrückt!

es geht ja nicht um das schreiben in der DB, sondern um das wiedergeben im Textfeld.
Angenommen die DB liefert Sommer's
was in ein Inputfeld ediert werden soll.
dann sieht das html so aus <input type='text' value='Sommer's'>

auch wenn ich es vor den speichern mit mysql_real_escape_string codiere und beim auslesen wieder zurück codieren würde
bleibt am ende Sommer's
oder vielleicht: viel "spass im Sommer's"
was nicht in ein inputfeld abgebildet werden kann, es sei ohne Hochkomma.
Das ist ja das Problem.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11616
Joined: 2003-02-27 01:00
Location: Hamburg

Re: HTML: Input Feld value sicher setzen

Post by Joe User » 2013-03-08 13:58

Ich habe Dich schon richtig verstanden ;)

Zunächst solltest Du grundsätzlich valides HTML/HTML5 schreiben.
Tags und Argumente sind dabei klein zu schreiben und Values in " statt ' einzubetten, also so:

Code: Select all

<input type="text" name="feld1" value="$feld1">


Eine mögliche Lösung wäre dann, " als &quot; auszugeben (so machen es phpBB3 und etliche andere WebApps) und ' as-is. Das wäre valides HTML und wird von allen Browsern korrekt interpretiert. Gleiches gilt auch für < und > und & und die anderen in HTML mit besonderer Bedeutung versehenen Zeichen. Für weitere Anregungen und Stolpersteine ist ein Blick in ein paar populäre WebApps durchaus hilfreich.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.