Wie und Wann verwenden Sie Html-Codierung
Ich habe vor kurzem erfahren, dass ich nicht speichern, die html-codierte Daten in der Datenbank, aber ich sollte lieber die html-Codierung der Daten, die angezeigt wird auf dem Bildschirm für den Benutzer.
Keine große Sache, ich muss fix meine Datenbank-Einträge und machen einige änderungen am code.
Aber meine Frage ist, Wann sollte ich die html-Kodierung und -, wenn nicht sollte I.
Zum Beispiel, innerhalb einer html-Tabelle, Schreibe ich direkt aus der Datenbank in das innere HTML-Code einer Spalte. Ohne Codierung dies wäre gefährlich, ich bekomme.
Was ist, wenn der Wert einer textbox. Es scheint zu funktionieren, ohne html-Codierung des Wertes. Aber ich bin mir nicht sicher, warum. Dies ist, was die textbox so Aussehen:
<input type="textbox" value="xxx"/>
Aber wenn Sie den Wert auf: "/><p style="font-size: 100px;">testing hack</p>
Der html-Quelltext wird:
<input type="textbox" value=""/><p style="font-size: 100px;">testing hack</p>
Wird es gut Aussehen, wenn angezeigt, so dass der p-tag funktioniert nicht wie beabsichtigt durch den "hack".
Wird jeder das bekommen, was ich versuche zu Zielen an 🙂 ?
Wenn ich versuche, html-Codierung etwas, das ich auf eine textbox Wert, das Ergebnis wird angezeigt "<" und so weiter, das ist nicht das, was ich beabsichtigte.
Also kurz: Soll ich nur die html-Codierung Zeug legen, um das innerHtml des html-Steuerelemente, und nicht, wenn der Wert zum Beispiel für Textfelder?
- Testen Sie den IE benutzen? IE manchmal entkommt Daten, die Sie an den server gesendet, wenn es im Dokument angezeigt wird.
- Nein, ich Teste in Chrom.
- Hast du wirklich Einblick in den Quelltext (STRG+U) oder hat man es in der "Elements" - tab der developer-tools, die manchmal nicht sagen, die ganze Geschichte?
- Ich sah Sie an "Elements" - Registerkarte, die ich nicht sollte ich das erraten? Aber so oder so, ist es dann unneccesary html codieren Dinge thats gonna be in einem Attribut? Oder sollte ich die Methode, die Sie vorgeschlagen "HtmlAttributeEncode", und wenn ja, warum? Ist es wirklich notwendig?
- Gut, sieht der unescaped in die HTML-Quelle zu?
- Ahh. Jetzt sehe ich, was Sie sagen. In der Quelle wird der Wert wurde automatisch html kodiert, aber in firebug oder die Chrome-Elemente sieht es seltsam aus. Hm, so bedeutet dies, dass es keine Notwendigkeit, html-Codierung, die Dinge, die in den Attributen der html-Steuerelemente? Ich muss einfach tun, es auf Dinge, für die innerHTML-Kontrollen.. Richtig?
- Nein! Nur, wenn Ihr server so konfiguriert wurde, dass auto-escape-Backslash (was passiert, bevor dein PHP-Skript bekommt die Daten, schauen in die Datenbank, es ist bereits geflohen ist) und Zitat der Woerter, die in der Regel führt zu furchtbar schlecht aussehende HTML-Seiten (zum Beispiel, wie sieht das aus? "Und er sagte: \'How do you do?\'") - deaktivieren Sie diese option und die Flucht es sich bei dieser Art von Flucht ist tatsächlich notwendig!
- Aber die Daten werden nicht escaped in meiner Datenbank, ich bin dem einfügen genau so, wie Sie vom Benutzer eingegeben werden. Ich bin mit ASP.NET durch die Art und Weise. Die textbox sieht gut aus, wenn ich das nicht mit html codieren, aber ich bin mir nicht sicher, ob seine sicher, auch wenn es gut aussieht. Ich fange an zu glauben .NET automatisch html kodiert für das Attribut, wenn ich es.
- Ach, sind Sie nicht einfügen wie in "strings verketten" aber wie in "verwenden einer Set-Methode, wurde für diese"? In diesem Fall ist alles ok, weil die Bibliothek vermutlich tut es für Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kam die Antwort aus thejh ' s und meine Diskussion im Kommentar zu der Frage. Ich war mir nicht sicher, was Markus als Antwort und so beschloss ich beantworte meine eigene Frage. Ich hoffe, das ist ok.
Scheint es, wie beim festlegen eines Werts eines Attributs (wie die textbox den Wert"") .NET automatisch html kodiert der Wert so gibt es keine Notwendigkeit, dies zu tun durch sich selbst.
Wenn Sie eine html-Steuerelemente innere HTML ist es allerdings wichtig, dass Sie html-Codierung des Wert.
Dank Thejh, leider konnte ich nicht bis Stimme etwas u schrieb.
edit: ich kann nicht markieren Sie diese als Antwort für weitere 2 Tage.
im Fall von
<input type="textbox" value="xxx"/>
'xxx' ist ein Attribut, und Sie sollten eine unterschiedliche Kodierung. In ASP.NET es ist
HtmlAttributeEncode
zum Beispiel.Für HTML-Attribute, codieren, backslashes und Anführungszeichen.
\
durch\\
"
durch\"
Ach, übrigens: Manchmal PHP das für Sie übernimmt, sehen hier.