Rails + SSL: для каждого контроллера или всего приложения? - PullRequest
13 голосов
/ 09 апреля 2011

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

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

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

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

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

1 Ответ

6 голосов
/ 09 апреля 2011

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

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

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

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

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

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

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

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

...