Что я мог / должен сделать, чтобы заботиться о безопасности в моем случае? - PullRequest
3 голосов
/ 12 января 2012

Я использую Ruby on Rails 3.1.0, и я хотел бы сосредоточиться на безопасности на использовании I18n gem для целей интернационализации.

На данный момент у меня есть:

# in .yml file
key_1_html: "%{var_1} is just a test"

# in view, controller and model files
I18n.t('key_1_html', :var_1 => 'Test variable')

Test variable - это / представляет ввод от пользователей, поэтому я должен рассматривать это как потенциальный взлом.

Что я мог / должен сделать, чтобы заботиться о безопасности в моем случае?

1 Ответ

0 голосов
/ 12 января 2012

При обычном использовании Rails (3.x) вам не нужно ничего делать.

Даже если какой-либо HTML-код или javascript попадет в строку, возвращаемую из i18n, если вы выводите строки, возвращаемые из i18n обычными способами, любой HTML-код в них (будь то из шаблона или переменной) будет экранирован иотображаться как буквальный источник на веб-странице.

Вы должны вручную пометить строку, возвращаемую i18n, как .html_safe, чтобы она была доставлена ​​как источник HTML.

Так что не делай этого.

Попробуйте сами и посмотрите.

I18n.t('key_1_html', :var_1 => '/<script>danger!</script>')

Теперь выведите это в шаблон ERB, посмотрите, что произойдет.

Если вы делаете с i18n что-то странное, кроме вывода через браузер типичных шаблонов Rails, вам нужно будет сказать, что и как вас беспокоит.

Я думаю, что, возможно, вам нужно это руководство для обзора проблем безопасности Rails:

http://guides.rubyonrails.org/security.html

См. Раздел 8 «Инъекция».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...