4

Я пытаюсь проверить свою аутентичность в ASP.NET Web API 2. В моем приложении я использую шаблон VS 2013, который реализует OAuth 2.0 и использует токен-носитель (например, JWT, как я помню). Мой вопрос: какой лучший способ сохранить токен на стороне клиента. В своей книге Badrinarayanan Lakshmiraghavan описывает токен-носитель какКак перенести токен на предъявителя на стороне клиента

Носитель-носитель - это как наличные деньги: искатели, хранители.

Следовательно, безопасно ли это сохранить в печенье? Разве это не означает, что тот, кто украдет куки, получит полный доступ к приложению? С другой стороны, я мог зашифровать токен, используя хеш, прежде чем сохранять его в файл cookie. Было бы достаточно безопасно? Есть ли другие альтернативы? Я видел несколько вопросов, задающих аналогичный вопрос в stackoverflow, но никогда не нашел удовлетворительного ответа.

ответ

5

Безопасно ли сохранить его в файл cookie?

No. Куки могут быть украдены с помощью XSS атак (и других векторов) Кроме того, это может быть восприимчивым к CSRF, поскольку куки будут представлены автоматически с любым запросом.

Я мог зашифровать маркер, используя хэш только перед сохранением его в печенье

Это также не работает. Хэширование не безопасный способ шифрования (и, кроме того, не позволяет дешифрование)

Есть ли другие варианты?

В принципе, вы должны передать маркер пользователю через защищенное соединение (HTTPS), но они должны вручную представить его для безопасности (снова через HTTPS)

+0

«В принципе, вы должны дать маркер для пользователя по защищенному соединению (HTTPS), но они должны вручную отправить его для обеспечения безопасности (опять же через HTTPS) ». Все еще не отвечает на вопрос полностью. Означает ли это, что, пока я использую HTTPS, нормально использовать cookie? – Bartosz

+0

Нет. Печенье можно легко украсть с помощью атаки XSS. Файлы cookie также автоматически отправляются с любым веб-запросом, чтобы они были подвержены подделке запросов на межсайтовый запрос. Ознакомьтесь с информацией (https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29) для получения дополнительной информации. – akirilov

+0

Значение по умолчанию для токена-носителя в Web API 2 составляет 14 дней. Как сохранить этот токен на стороне клиента? – Bartosz

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