Я провел некоторое исследование файлов cookie HttpOnly и проблемы, которая существует с возможностью использования запроса XHR в сочетании с методом TRACE для получения значения файла cookie, возвращаемого с сервера.
Для безопасного веб-приложения в настоящее время у меня есть следующая настройка:
- Файл cookie сеанса отправляется при входе в систему с установленными свойствами secure и httpOnly.
- HTTP-метод TRACE отключен для всего домена (возвращается «Метод 405 не разрешен»)
Чтобы избежать подделки межсайтовых запросов, я добавил в формы случайный ключ в скрытом поле. Этот ключ должен быть возвращен в каждом запросе POST, чтобы запрос был принят.
Кроме того, весь HTML экранируется по умолчанию с использованием белого списка для выбора разрешенных тегов и атрибутов, но чтобы проиллюстрировать, почему этого недостаточно: ранее мы разрешали использовать атрибут стиля для диапазона (например, для окрашивания текста), который можно использовать для передачи javascript в Internet Explorer следующим образом:
<span style="width: expression(alert('Example'));"> </span>
И затем последний вопрос: может ли кто-нибудь указать на какие-либо недостатки или предложения по возможным недостаткам в этой настройке? Или вы используете одинаковые или совершенно разные подходы?
Известные проблемы:
- Не все браузеры поддерживают httpOnly
- Фильтровать css JS-выражения недостаточно, @import(external-style-sheet) тоже может работать