Rails + SSL: для контроллера или для всего приложения?

Я мог бы использовать некоторую мудрость от любых разработчиков, которые работали с Rails и SSL. У меня довольно простое приложение, и я занимаюсь обработкой платежей. Очевидно, что обработка платежей требует SSL, поэтому я настраиваю это сейчас.
Мое намерение, когда я начал работать над этим сегодня, - найти самый простой/самый чистый способ принудительного использования SSL для определенных действий контроллера, а именно все, что связано с оплатой. Я решил, что нет причин запускать остальную часть моего сайта на SSL.

Я нашел ssl_requirement gem, который, по-видимому, заботится о настройке SSL для каждого контроллера-действия без особых трудностей, так что хорошо. Я также нашел этот вопрос, который, как представляется, указывает на то, что обработка SSL с помощью драгоценного камня теперь не соответствует стилю.
Я также нашел несколько ответов/комментариев и т.д., Предлагая, чтобы сайт просто использовал промежуточное ПО Rack, например Rack-SSL, чтобы заставить весь сайт работать в режиме SSL.

Итак, теперь я немного смущен и не знаю, что мне делать. Может ли кто-нибудь с опытом работы с Rails 3 и SSL помочь мне понять:

  • Должен ли я принуждать весь сайт к SSL или только к определенным действиям.
  • Что бы вы хотели использовать SSL в Rails (раньше я этого не делал).
  • Если каждый контроллер - это способ пойти, имеет ли смысл использовать драгоценный камень ssl-requirement, или я должен просто использовать новые параметры маршрутизации и вспомогательные ссылки...

Я очень признателен вам за понимание, это стало для меня парализующим решением. Спасибо!

Ответ 1

Я нашел себя "парализованным" этим решением в прошлом, и вот о чем я думаю каждый раз.

Во-первых, имейте в виду, что некоторые браузеры будут вызывать всплывающие предупреждения, если вы продолжаете отключать и в SSL, или если вы обслуживаете некоторый контент (страницу) с помощью SSL и другого контента (изображений, css) без. Очевидно, что это не очень хороший опыт для пользователей.

  • Единственный возможный недостаток использования SSL везде - производительность. Но если вы не ожидаете, что 1000 пользователей/день будут делать много вещей, которые * не требуют SSL, это ничтожно.

  • SSL обрабатывается на уровне Apache/Nginx/любого уровня. Поэтому, если вы решите разместить все свое приложение за SSL, имеет смысл иметь дело с ним на уровне веб-сервера (перенаправить http:/yoursite.com на https://yoursite.com.

И если по соображениям производительности вы решите не разместить все за SSL, тогда все же может иметь смысл обрабатывать переадресацию SSL на уровне веб-сервера. Позволяя своему пользователю через ваш веб-сервер, а затем отправив его через половину стека Rails, просто для его загрузки, чтобы начать заново, очень расточительно.

Конечно, есть что-то сказать для простоты и областей знаний, которые предлагали бы использовать перенаправления в вашем приложении Rails или промежуточном программном обеспечении, поскольку оно "знает", что безопасно и небезопасно.

Но это те вещи, которые вам придется взвесить сами. Это зависит от того, важна ли производительность или простота разработки/обслуживания.

Обычно я получаю виртуальный хост для http://mysite.com, который перенаправляет все (или иногда только определенный uris) на https://mysite.com/ $1. Надеюсь, что это полезно.