簡體   English   中英

Rails形式的text_field轉義html

[英]Rails form text_field escaping html

在我的Rails表單上進行試驗,發現將<scrip>alert("hello")</script>插入text_field會給我兩個不同的結果。

當我在顯示頁面中使用該值時,該值會自動轉義。

當我以新的形式使用該值(例如,允許用戶編輯)時,不會轉義該值,並且會彈出警報彈出窗口。

經過大量研究,我發現text_area的轉義布爾值可以防止這種情況發生,但是text_field卻不能。 google上出現的大多數內容都是關於在erb模板中轉義,當使用表單時,這似乎無效。 有一些提示應該將數據清理到db中,但是關於最佳方法的指南很少-除了使用xssterminate這樣的舊解決方案外,這似乎可以追溯到Rails2。甚至RoR安全性該指南着重於清理erb輸出,而不是清理輸入。

兩個問題。

  1. 在保存text_field輸入之前,目前的最佳做法是什么? (例如:在表單,控制器或模型中。哪些寶石仍被視為當前寶石?)
  2. 無論如何,由於我很偏執,因此在顯示數據庫數據時如何清理text_field?

絲瓜絡-activerecord寶石( https://github.com/flavorjones/loofah-activerecord )看起來像是最好的選擇,它可以清理進入數據庫的數據。 在模型上使用xss_foliate會默認剝離所有列的標簽。

例如

class User < ActiveRecord::Base
  xss_foliate

  ...
end

我還沒有找到第二點的解決方案,但是如果有一個解決方案,我將非常想知道!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM