2013-03-20 1 views
3

Я разрабатываю приложение, которое я буду размещать на Heroku. Приложение используется только в пределах iframe на другом сайте, поэтому меня не интересует доменное имя. Я планирую развернуть свое приложение на example.herokuapp.com вместо того, чтобы использовать собственный домен на example.com.Безопасны ли файлы cookie в приложении Heroku на сайте herokuapp.com?

Мое приложение использует файлы cookie, и я хочу быть уверенным, что другие не могут манипулировать моими кукисами, чтобы защитить мое приложение от session fixation и подобных атак. Если attacker.herokuapp.com может установить файл cookie для herokuapp.com, браузеры не смогут защитить меня, так как herokuapp.com не является public suffix. См. http://w2spconf.com/2011/papers/session-integrity.pdf для подробного описания проблемы.

Мой вопрос: когда браузеры не могут защитить моих пользователей, будет ли Heroku делать это, блокируя файлы cookie для herokuapp.com?

ответ

6

Просто хочу опубликовать обновление для тех, кто сталкивался с этим вопросом, как и я. Я работал над аналогичной проблемой, за исключением того, что я хотел целенаправленно разрешить доступ к тому же файлу cookie из двух разных приложений heroku.

«herokuapp.com» и «herokussl.com» теперь на Public Suffix List, поэтому ваши куки должны быть безопасными, если они установлены для одной из этих областей. В итоге мне пришлось использовать пользовательские домены для совместного использования файлов cookie в обоих приложениях.

Heroku также опубликовал статью на тему: https://devcenter.heroku.com/articles/cookies-and-herokuapp-com

1

Я просто попытался добавить файл cookie из своего приложения Heroku с заголовком ответа Set-Cookie: name=value;Path=/;Domain=.herokuapp.com, и к моему разочарованию я мог видеть заголовок неповрежденным в моем браузере. Таким образом, инфраструктура Heroku не обнаруживает и не удаляет это суперкругкое приложение.

Я вижу три возможных пути защиты приложения Heroku против кросса-приложений supercookies:

  • Не использовать кук вообще.
  • Используйте собственный домен.
  • Убедитесь, что каждый файл cookie был установлен вашим приложением и ограничил его IP-адресом клиента, установив the X-Forwarded-For header.

Моего запрос функция для Heroku будет то, что они должны фильтровать ответы HTTP, который проходит через HTTP-маршрутизацию, таким образом, что приложения, размещенные на их инфраструктурах не может установить печенье с Domain=herokuapp.com.

0

Мне кажется, что до тех пор, пока вы устанавливаете cookie для example.herokuapp.com, cookie безопасен от манипуляций. Файл cookie будет представлен только в приложении, работающем на example.herokuapp.com, и до herokuapp.com (где приложение не запускается).

+0

Я не уверен, что я понимаю, что вы пытаетесь сказать. Да, если я уже сам установил cookie для example.herokuapp.com, я в безопасности, но когда я получаю запрос, содержащий куки-файл, у меня нет возможности узнать, поставил ли я его сам на example.herokuapp.com , или если он был установлен кем-то еще на herokuapp.com. Если в вашем последнем предложении означают «и» вместо «on», то cookie, установленный моим приложением, не будет представлен в голом домене herokuapp.com, но я не беспокоюсь о том, что это не файлы cookie, установленные моим приложением. –

+0

Почему вы беспокоитесь о cookie, установленном другими сайтами? Если вы храните конфиденциальную информацию в cookie или если файлы cookie используются для хранения информации о сеансе, вы должны зашифровать и затем подписать файл cookie. Здесь вы можете прочитать подробности: https: // github.com/appharbor/AppHarbor.Web.Security – friism

+0

Подписание и шифрование файлов cookie не предотвращает повторные атаки. Кэрол посещает мой сайт и получает сеансовое печенье. Алиса посещает сайт Кэрол, и сайт устанавливает cookie сеанса, который я дал Кэрол для домена herokuapp.com. Затем Алиса посещает мой сайт, и мой сайт будет получать cookie сессии Кэрол и будет думать, что она Кэрол. На моем сайте это будет означать, что Алиса может автоматически войти в систему с использованием учетной записи пользователя Carol, и она может ввести некоторые личные данные, не заметив, что она вошла в учетную запись Кэрол. –

Смежные вопросы