Geben Sie einen Zeilenumbruch in das Formular ein
Zeilenumbrüche werden bei der Ausgabe nicht berücksichtigt
macOS Catalina 10.15.6
ruby 2.6.5
Rails 6.0.3.4
MySQL : 5.6.47
Bootstrap : 4.3.1
simple_format: Hilfsmethode. Express Zeilenumbrüche mit p-Tags und br-Tags
h Option: XSS-Gegenmaßnahmen. Fügen Sie simple_format eine Escape-Funktion hinzu
【Referenz】
app/controllers/tasks_controller.rb
def show
@task = Task.find(params[:id])
@commits = @task.commits
end
erb:app/views/tasks/show.html.erb
<% @commits.each do |commit| %>
<%= commit.content %>
<% end %>
Bei dieser Anzeigemethode werden die Zeilenumbrüche in commit.content nicht wiedergegeben.
<Gefällt mir>
Dies kann mit simple_format gelöst werden. Lass es uns tatsächlich tun.
erb:app/views/tasks/show.html.erb
<!-- simple_Format verwenden-->
<% @commits.each do |commit| %>
<%= simple_format(commit.content) %>
<% end %>
** simple_format ist eine Hilfsmethode **, die Zeilenumbrüche mit p-Tags und br-Tags ausdrückt. Geben Sie einfach den Text, den Sie ausgeben möchten, in simple_format ein und fertig.
Nun, vorerst ist das Ziel erreicht. Es gibt jedoch ein Problem mit dieser Implementierung. Es ist nicht "entkommen" </ b>.
Lass uns genauer hinschauen.
Escape ist eine Technik, die bei Sicherheitsmaßnahmen eingesetzt wird. Einfach ausgedrückt hat es die Rolle " die Bedeutung aussagekräftiger Zeichen </ b> eliminieren".
Schauen wir es uns konkret an. Angenommen, Sie geben Folgendes ein.
Wenn Sie diesen Wert anzeigen, ohne ihn zu umgehen, wird er als solches "HTML-Tag" erkannt.
In HTML wird "<" als "das Tag startet!" Erkannt. Wenn es nicht maskiert wird, wird es daher als h1-Element angezeigt.
Diese Escape-Funktion wird mithilfe von <% =%> gewährt, das in Rails-Ansichten verwendet wird. Wenn Sie jedoch simple_format verwenden, verlieren Sie diese Funktionalität.
Verwenden Sie daher bei Verwendung von simple_format die Option h. Dies ist eine großartige Möglichkeit, simple_format eine Escape-Funktion hinzuzufügen.
erb:app/views/tasks/show.html.erb
<%#Verwenden Sie die Option h%>
<% @commits.each do |commit| %>
<%= simple_format(h(commit.content)) %>
<% end %>
Dadurch wird die Anzeige wie unten gezeigt geändert.
Die Bedeutung wird von "<" usw. entzogen und nur als Symbol oder Zeichen angezeigt. Gleichzeitig sind die Buchstaben kleiner geworden! (In p-Tag eingeschlossen)
Ich möchte den Zeilenumbruch der Form widerspiegeln
Möglich mit simple_format!
Besser h für Sicherheitsmaßnahmen verwenden
Es scheint, dass simple_format häufig verwendet wird, aber es ist auch eine beängstigende Hilfsmethode, wenn Sicherheitsmaßnahmen vernachlässigt werden. Denken Sie bei der Verwendung daran.
Recommended Posts