Отключить санацию XSS и HTML в Rails 3 - PullRequest
1 голос
/ 05 августа 2011

У меня возникла проблема, когда при сохранении содержимого моего текстового редактора в базе данных с использованием activerecord содержимое html удаляется из содержимого html (я думаю, что оно запускает html_safe). Я попытался переопределить метод html_safe в строке содержимого, но ничего не работает.

content = "<p>hello</p>"
@article.content = content
puts @article.content # "<p>hello</p>"
@article.save
puts @article.content # "<>hello</>"

Как можно переопределить возможности разметки html в activerecord для определенного столбца?

Ответы [ 4 ]

1 голос
/ 06 августа 2011

Как откровенная метель уже сказал в его ответе , вы делаете себя уязвимыми двумя XSS-атаками.

Но если вы доверяете своим авторам, что эти столбцы безопасны для двух отображений, вы можете сделать что-то подобное в вашей Article модели

class Article < ActiveRecord::Base
  def content
    attributes[:content].html_safe
  end
end
0 голосов
/ 15 августа 2012

Оказывается, проблема в том, что с Rails или разборкой XSS не было ничего общего.Код, который я имел, изменял строку, а затем сохранял результаты в другом месте, что приводило к изменению исходного ввода.Я решил проблему с помощью string.dup, чтобы скопировать исходную строку, чтобы на меня не влияли.

0 голосов
/ 05 августа 2011

Вы можете использовать метод raw(string), но он сделает вас уязвимыми против атак XSS. Другим вариантом будет более глубокий взгляд на уценку .

0 голосов
/ 05 августа 2011

Должна быть опция для этого.

Я рекомендую вам взглянуть на документы редактора форматированного текста, который вы используете.

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