2015-08-19 2 views
0

Я использую Brakemangem, чтобы проанализировать код приложения ruby-on-rails.Ruby On Rails - Brakeman: файлы cookie сеанса должны быть установлены только на HTTP

Он имеет следующие High level security warning:

Warning Type | Message            | 
-------------------------------------------------------------------------- 
Session Setting | Session cookies should be set to HTTP only near line 3 | 

Согласно documentation, установка атрибута httponly в true, а не false (значение по умолчанию), внутри config/initializers/session_sotre.rb снимает это предупреждение (он работал для меня).

Может кто-нибудь объяснить, что происходит? Почему он решает эту проблему? устанавливает значение true может вызвать проблему?

+1

проверка орфографии делает странные вещи время от времени ... Спасибо за ваш комментарий –

ответ

3

По умолчанию Rails устанавливает флаг HTTPOnly на сессионные файлы cookie. Этот флаг запрещает JavaScript читать cookie (see here for details) и, таким образом, не позволяет cross-site scripting attacks получить доступ к файлу cookie. В случае файлов cookie сеанса он предотвращает кражу/захват сессий посредством межсайтового скриптинга.

Установка httponly: false в параметрах хранилища сеансов отключает эту защиту. Вы можете либо установить его на true, либо не устанавливать его вообще (в этом случае по умолчанию все еще true).

Однако, если приложение по какой-либо причине должно получить доступ к куки-файлу сеанса из JavaScript, вам необходимо отключить опцию httponly. Однако это должно быть довольно редко.

+0

Justin - если вы создаете внешнее приложение, например, с помощью React, вам нужно будет отключить флаг HTTPOnly , так что React может иметь доступ к файлам cookie? –

+0

Зачем нужно было читать файл * session * cookie? Файлы cookie отправляются на сервер независимо от флага 'httponly'. Флаг предотвращает фактический доступ к значению cookie JavaScript. – Justin