362 Stimmen

raw vs. html_safe vs. h zu unescape html

Angenommen, ich habe die folgende Zeichenkette

@x = "<a href='#'>Turn me into a link</a>"

Meiner Ansicht nach soll ein Link angezeigt werden. Das heißt, ich möchte nicht, dass alles in @x unescaped und als String angezeigt wird. Was ist der Unterschied zwischen der Verwendung von

<%= raw @x %>
<%= h @x %>
<%= @x.html_safe %>

?

3voto

user3118220 Punkte 1360

In einfachen Rails-Begriffen:

h html-Tags in Zahlenzeichen umwandeln, so dass die Darstellung nicht unterbrochen wird

html_safe setzt einen Booleschen Wert in string, so dass der String als html save betrachtet wird

raw Es konvertiert in html_safe zu string

0voto

BenKoshy Punkte 29349

Kurz und einfach

Gehen wir davon aus, dass wir den Benutzereingaben nicht trauen können.

Schlecht:

user_input.html_safe # asking for trouble

Gut:

user_input.html_escape # or

h(user_input) # in some view

Eingaben, die wir kontrollieren:

trusted_input_only.html_safe

Das sollte in Ordnung sein. Aber seien Sie vorsichtig, was Ihre vertrauenswürdigen Eingaben sind. Sie dürfen nur von Ihrer Anwendung generiert werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X