Вы можете пойти по пути использования чего-то вроде sanitize gem с пользовательским белым списком. Но так как он должен был бы принять такие вещи, как <iframes>
, это могло бы стать хитрым.
Самым безопасным вариантом, вероятно, было бы использование синтаксического анализатора HTML, например nokogiri , для анализа конкретных необходимых значений и вставки их в собственный шаблон для каждой службы.
Для вашего примера вставьте код:
<iframe width="560" height="315" src="http://www.youtube.com/embed/INx7B2yyD0g" frameborder="0" allowfullscreen></iframe>
Вам просто нужно взять что-то вроде:
{:with => 560, :height => 315, :youtube_id => 'INx7B2yyD0g'}
Это определенно больше работы, так как вам придется иметь разные парсеры и шаблоны для каждой поддерживаемой вами видео-службы. Но это самый безопасный способ избежать вредоносного внедрения HTML.