Избегать ввода амперсандов пользователями через текстовые поля? - PullRequest
2 голосов
/ 12 октября 2009

Как и во всех современных приложениях, у меня есть пользователи, которые вводят различную информацию с помощью стандартного ввода текста. Мое приложение работает на Rails.

Легко избежать амперсандов, которые я включаю как часть копии сайта и т. Д. Но как мне избежать амперсанда, который динамически вводится пользователем? В настоящее время это нарушает мою проверку интерфейса.

1 Ответ

6 голосов
/ 12 октября 2009

При отображении значений вам необходимо заменить определенные символы на HTML-объекты. Эти символы:

& : &
< : &lt;
> : &gt;
" : &quot;

Возможно, есть функция HtmlEncode, которую вы можете использовать для этого, в противном случае вы можете использовать простые строковые операции. Псевдокод:

output replace(replace(replace(replace(text, "&", "&amp"), "<", "&lt;"), ">", "&gt;", """", "&quot;")

Edit:
Я обнаружил, что вы можете использовать функцию html_escape ():

<%=html_escape @text%>

Или коротко:

<%=h @text%>
...