Frage

Einfache Frage, die mich immer wieder nervt.

Soll ich HTML kodieren Benutzereingaben sofort und speichert die codierten Inhalte in der Datenbank, oder sollte ich speichern die Rohwerte und HTML kodieren, wenn angezeigt wird?

Speichern von codierten Daten reduziert das Risiko eines Entwicklers zu vergessen die Daten zu codieren, wenn es angezeigt wird. Allerdings wird die codierten Daten zu speichern macht Datamining etwas umständlich, und es wird ein wenig mehr Platz in Anspruch nehmen, auch wenn das in der Regel kein Thema.

War es hilfreich?

Lösung

i stark würde vorschlagen, Informationen kodieren, auf dem Weg. Rohdaten in der Datenbank gespeichert ist nützlich, wenn Sie die Art und Weise ändern mögen es an einem bestimmten Punkt betrachtet wird. die Strömung sollte etwas ähnlich sein:

sanitize user input -> protect against sql injection -> db -> encode for display

denken über eine Situation, wo Sie wollen, könnten die Informationen als RSS-Feed statt angezeigt werden soll. jede HTML-spezifische Codierung wiederholen zu müssen, bevor Sie wieder Display scheint ein bisschen albern. jede Entwicklung sollte die „nicht vertrauen Eingang“ meme immer folgen, ob die Eingabe von einem Benutzer oder von der Datenbank vorhanden ist.

Andere Tipps

Die Codierung sollte nur nur im Display erfolgen. Ohne Ausnahme.

Ausgabe.

Mit HTML können Sie nicht einfach überprüfen Länge eines Strings (& ist 1 Zeichen, aber strlen() wird Ihnen sagen, 5), können Sie diese leicht zuschneiden (es könnte Einheiten brechen).

Sie müssen möglicherweise mit Saiten aus einer anderen Quelle, oder lesen und schreiben sie zurück Strings aus der Datenbank mischen. Dadurch applikationsweit ohne Laufene fehlt und Doppel Entkommen zu vermeiden, ist ein Alptraum.

versucht PHP ähnliche Sache mit magic_quotes zu tun, und es erwies sich als ein großer Fehler zu sein. Nehmen Sie nicht magic_entities Weg! :)

Beachten Sie, dass Sie möglicherweise die Datenbank mit etwas zuzugreifen, die HTML nicht verstehen codierten Text (beispielsweise ein Reporting-Tool). Ich bin damit einverstanden, dass der Raum kein Thema ist, aber meiner Meinung nach, HTML-Codierung in der Datenbank setzen bewegt Wissen Ihrer Ansicht / Frontend in die unterste Stufe in der Anwendung, und das ist ein Design-Fehler.

Ist dies nicht der Zweck der Codierung besiegen? Wenn ein böswilliger SQL-Skript als Eingabe eingegeben wird, die dann an die DB übergeben wird es könnte ein großes Problem verursachen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top