Wir haben eine Sicherheitsdiagnose für die derzeit in Entwicklung befindliche App durchgeführt, jedoch eine Sicherheitsanfälligkeit namens XSS (Cross-Site Scripting) festgestellt und beschlossen, diese zu beheben. Es scheint für einen Webentwickler zu offensichtlich zu sein, aber es war das erste Mal, dass ich mich damit befasste, also war es ziemlich schwierig. Ich hatte einige Stolpersteine, also schreibe ich diesmal einen davon.
https://qiita.com/kamohicokamo/items/571c58f2d6738a7dfe6a In Bezug auf diesen Artikel möchte ich die Daten für XSS-Gegenmaßnahmen bereinigen.
haml:name.html.haml
'Yamada Taro<script>alert("Yamada Taroです")</script>'
Wenn Sie es so anzeigen, wie es ist,
Das eingebettete JavaScript wird ausgeführt. Das ist schlecht für die Sicherheit.
= sanitize 'Yamada Taro<script>alert("Yamada Taroです")</script>'
Mit diesem "Desinfizieren",
Auf diese Weise wird das Skript-Tag entfernt und es wird nur Text.
Sie können sich die Mühe machen, "sanitize" in View zu schreiben, aber ich möchte es deaktivieren, wenn eine Zeichenfolge mit HTML-Tags eingegeben wird.
Da es sich bei dieser "Desinfektions" -Methode jedoch um eine Hilfsmethode handelt, ist die Verwendung mit Ausnahme von ...
Ich habe eine Methode wie diese gemacht.
model
def remove_script_tag(str)
ActionController::Base.helpers.sanitize(str)
end
sanitize
-Methode entfernt standardmäßig nur das <script>
-Tag, daher wird es als remove_script_tag
festgelegt.Wenn Sie diese Methode gut mit "before_validation" oder "before_save" verwenden, sollten Sie in der Lage sein, ungültig zu machen, selbst wenn ein bösartiges Skript als Zeichenfolge gesendet wird.
ruby 2.6.6 rails 6.0.3.2
Recommended Posts