[RUBY] So schreiben Sie, wenn Sie Zeilenumbrüche und Ausgaben beibehalten und XSS in Rails vermeiden möchten

Geben Sie die folgenden Zeichenfolgen einschließlich Skript-Tags auf verschiedene Arten aus und vergleichen Sie die Unterschiede.

@hoge


<script>
  alert('you are an idiot');
</script>

Ausgabe wie sie ist

erb


<%= @hoge %>

Ausgabe


<script> alert('you are an idiot'); </script>

Ergebnis

XSS kann vermieden werden, Zeilenumbrüche und Leerzeichen werden jedoch nicht wiedergegeben

html_safe

erb


<%= @hoge.html_safe %>

Ausgabe


Skript wird ausgeführt!

Ergebnis

Induziert XSS. Trotz seines Namens ist html_safe überhaupt nicht sicher.

simple_format(@hoge, sanitize: true)

erb


<%= simple_format(@hoge, sanitize: true) %>

Ausgabe


alert('you are an idiot');

Ergebnis

Das Skript-Tag wird gelöscht

h(@hoge)

erb


<%= h(@hoge) %>

Ausgabe


<script> alert('you are an idiot'); </script>

Ergebnis

XSS kann vermieden werden, Zeilenumbrüche und Leerzeichen werden jedoch nicht wiedergegeben

simple_format(h(@hoge))

erb


<%= simple_format(h(@hoge)) %>

Ausgabe


<script>
alert('you are an idiot');
</script>

Ergebnis

XSS tritt nicht auf. Das Skript-Tag wird maskiert und die Zeilenumbrüche bleiben erhalten. Nur das Leerzeichen nach dem Zeilenumbruch wird nicht wiedergegeben.

Impressionen

Wenn Sie den Zeilenumbruch widerspiegeln möchten, scheint simple_format (h (@hoge) gut zu sein.

Recommended Posts

So schreiben Sie, wenn Sie Zeilenumbrüche und Ausgaben beibehalten und XSS in Rails vermeiden möchten
Wenn Sie explizit ODER oder UND mit Ransack schreiben möchten
So schreiben Sie in die Modellklasse, wenn Sie mit PlayFramework Binärdaten in der Datenbank speichern möchten
Wie schreibe ich, wenn ich mit "C language string array" wie argv [] in Ruby-FFI umgehen möchte?
Tipps, wenn Sie beim Ersetzen einer Zeichenfolge viele Zeilenumbrüche und Tabulatoren einfügen möchten
[Java] Wie man Dateien ausgibt und schreibt!
Wenn Sie InputStream in JDBI3 binden möchten
[Ruby on Rails] Wie schreibe ich eine Enumeration auf Japanisch?
Wie schreibe ich Rails
So schreiben Sie eine Datumsvergleichssuche in Rails
Wenn Sie Annotation in Java 8 dynamisch ersetzen möchten
[Ruby + Rails] Wenn Sie sich zusammen mit der Benutzerregistrierung in der Mailchimp-Mailingliste registrieren möchten
So lösen Sie das Problem, wenn der Wert nicht gesendet wird, wenn das Formular in Schienen deaktiviert und gesendet wird
So legen Sie mit JAXB Zeichencode und Zeilenvorschubcode fest
[Rails] So definieren Sie Makros in Rspec und standardisieren die Verarbeitung
So legen Sie den Zeichencode und den Zeilenvorschubcode in Eclipse fest
[Rails] Verschiedene Unterschiede zwischen redirect_to und Render-Methode und Ausgabemethode der Render-Methode
Schreiben und Notizen bei der Migration von VB zu JAVA
docker-compose.yml, wenn Sie MySQL auf Docker laufen lassen möchten
[Rails 5] japanMap-Link So schreiben Sie Parameter in die js.erb-Datei
[Rails] So schreiben Sie user_id (externer Schlüssel) in einen starken Parameter
Wie schreibe ich Rails Seed
Wie schreibe ich Rails Routing
[Für Super-Anfänger] Das Mindestwissen, das Sie mit Hashes und Symbolen berücksichtigen möchten
Speicherort der Methodendefinition Zusammenfassung der zu überprüfenden Informationen Wenn im Projekt und in Rails / Gem definiert
So lassen Sie zu, dass Anmerkungen Elemente festlegen, die Sie nicht ausgeben möchten, wenn Sie ein Objekt rekursiv als Zeichenfolge serialisieren
[Rails / Routing] So verweisen Sie auf den Controller in Ihrem eigenen Verzeichnis
ProxyFactory ist praktisch, wenn Sie AOP mit Spring testen möchten!
[Webpacker] Zusammenfassung der Installation von Bootstrap und jQuery in Rails 6.0
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
Wie schreibe ich Ruby, wenn in einer Zeile Zusammenfassung vom Anfänger
[jOOQ] Wie in der WHERE / AND / OR-Klausel WANN FALLEN
So löschen Sie große Datenmengen in Rails und Bedenken
[Rails] Wie schreibe ich eine Ausnahmebehandlung?
So installieren Sie jQuery in Rails 6
So installieren Sie Swiper in Rails
Wenn Rails eine Sitzung für einen bestimmten Controller deaktivieren soll
Dinge, die beim Kombinieren von if-Anweisungen und logischen Operatoren zu beachten sind
So implementieren Sie Suchfunktionen in Rails
So ändern Sie den App-Namen in Rails
So fügen Sie ein Video in Rails ein
Verwendung von MySQL im Rails-Tutorial
So beheben Sie Fehler, die während der Installation von Rails 5.1.3 auftreten
Grundlegende Rails-Befehle, die Sie lernen möchten
[Rails] [Hinweis] Wann = zu <%%> hinzugefügt werden soll und wann nicht
[Rails] So konfigurieren Sie das Routing in Ressourcen
So implementieren Sie Ranking-Funktionen in Rails
Verwendung von credentials.yml.enc aus Rails 5.2
So leiten Sie zu http-> https um, wenn SSL in der Rails × Heroku-Umgebung aktiviert ist
Wenn Sie irgendwo einen Fehler melden möchten, wenn Sie graphql-spring-boot mit Spring Boot verwenden