Escape URL в рельсах - PullRequest
       25

Escape URL в рельсах

2 голосов
/ 28 июня 2011

У меня есть система комментирования, где люди могут оставлять комментарии вместе со своим сайтом. Поскольку по умолчанию рельсы теперь избегают всего, я действительно ничего не делаю, чтобы избежать XSS, и это работает - почти. По какой-то причине URL не экранирован.

Для отображения имени пользователя у меня есть простой помощник:

def display_name(name, site)
  if !site.blank?
    return link_to(name, site)
  else
    return name
  end
end

Но если вы поместите что-то вроде javascript: alert (1) в поле сайта, оно будет вставлено прямо в страницу - есть идеи, как избежать этого?

1 Ответ

2 голосов
/ 28 июня 2011

Даже если вы отключите JavaScript, вредоносные пользователи могут создавать URL-адреса, которые, например, указывают на удаление URL-адресов, которые могут потенциально повлиять на данные пользователя. Почему бы не проверить URL как таковой, когда вы собираете его?

validates :attribute, :url => true

Я бы порекомендовал использовать UrlValidator Thong Kuah .

...