如何使Rails I18n字符串部分安全

时间:2014-08-16 07:56:59

标签: ruby-on-rails security rails-i18n

在Ruby on Rails框架中使用i18n gem时,如何仅将传递给转换方法的变量标记为不安全?

例如:

t(
  'safe', 
  default: 'Unsafe <b>%{unsafe_variable}</b> and safe %{safe_variable}', 
  unsafe_variable: "<script>alert('unsafe');</script>", 
  safe_variable: '<strong>safe</strong>'
)

应该返回

Unsafe <b>&lt;script&gt;alert('unsafe');&lt;/script&gt;</b> and safe <strong>safe</strong>

1 个答案:

答案 0 :(得分:2)

如果您事先知道哪一个是安全的,哪一个是不安全的,您只需使用h帮助程序强制转义不安全的变量。

t('safe', default: 'Unsafe <b>%{unsafe_variable}</b> and safe %{safe_variable}', 
  unsafe_variable: h("<script>alert('unsafe');</script>"), 
  safe_variable: '<strong>safe</strong>'
)