Является ли защита Rails по умолчанию в Rails небезопасной? - PullRequest
11 голосов
/ 01 апреля 2010

По умолчанию форма защиты от CSRF в Rails создает маркер подлинности для пользователя, который изменяется только при изменении сеанса пользователя. Один из наших клиентов провел аудит безопасности нашего сайта и отметил это как проблему.

Аудитор заявил, что если у нас также есть уязвимость XSS, злоумышленник может получить токен аутентификации другого пользователя и использовать его для атак CSRF до истечения сеанса пользователя.

Но мне кажется, что если бы у нас была такая уязвимость XSS, злоумышленник мог бы так же легко получить cookie сеанса другого пользователя и войти в систему, как и этот пользователь напрямую. Или даже просто звоните в наш REST Api из скрипта, когда пользователь подвергается атаке. Возможность монтировать CSRF-атаку в такой ситуации выглядит не хуже ... проблема заключается в уязвимости XSS.

Я что-то пропустил? Есть ли реальная проблема с защитой CSRF по умолчанию в Rails?

1 Ответ

11 голосов
/ 01 апреля 2010

Вы совершенно правы. CSRF-защита на основе токенов является наиболее распространенной, и пока вы тестируете свое приложение для XSS, у вас все будет хорошо.

В некоторых случаях CSRF все еще можно остановить независимо от XSS. Например, для вашего форума по смене пароля требуется, чтобы они знали текущий пароль. Хакер не сможет подделать этот запрос, если он не знает текущий пароль, спорный вопрос.

Еще один метод - запросить капчу для этого запроса. Я рекомендую использовать reCapthca.

...