В уеб сигурността детайлите често решават всичко. Един привидно малък флаг като HttpOnly
може да бъде границата между обикновена страница и компрометиран акаунт.
Защо този флаг има значение?
Когато дадена бисквитка е маркирана като HttpOnly
, браузърът забранява достъпа до нея чрез JavaScript. Тя продължава да се изпраща със заявките към сървъра, но клиентските скриптове не могат да я прочетат или модифицират.
Това предпазва от XSS атаки, при които злонамерен скрипт се инжектира в страницата и опитва да открадне сесийни или „remember me“ бисквитки. А, ако атакуващият получи такава бисквитка, той ефективно поема контрол над сесията на жертвата.
С други думи — ако чужд скрипт се промъкне във вашия фронтенд, HttpOnly
може да е последната ви защита срещу пълно компрометиране на потребителски акаунти.
Добрата новина?
Много съвременни фреймуърци и CMS-и по подразбиране включват HttpOnly
за сесийните бисквитки. Това е една от причините да избираме платформи с добри security defaults — защото някои неща трябва просто да работят сигурно от първия ден, дори и да не знаем за съществуването им.
Разбира се, има изключения. Например при CSRF токените, които трябва да бъдат достъпни за JavaScript, HttpOnly
не се използва умишлено. Но за сесии и автентикационни бисквитки – няма причина да го изключвате.
Какво да запомним?
-
HttpOnly
прави бисквитките невидими за JavaScript, защитавайки ги от XSS -
Винаги го използвайте за сесийни и „remember me“ бисквитки
-
Изключвайте го само ако наистина ви трябва достъп от JavaScript (рядко и рисково)
-
Избирайте технологии с добри настройки, свързани със сигурността, зададени по подразбиране (виж по-долу)
Как да изберете „сигурен по подразбиране“ фреймуърк?
Не всичко трябва да се изгражда ръчно. Добре подбраният фреймуърк може да осигури силен старт още от първата заявка.
Търсете „secure by default“
-
Сесии с
HttpOnly
иSecure
(при HTTPS) -
Активна CSRF защита
-
Лесна настройка на CSP
-
Валидиране на входа и escaping на изхода
Laravel и WordPress го правят — ако знаете къде да пипнете.
Проверете документацията
Търсете секции като Security, Best Practices, Hardening Guide. Ако липсват — проблем.
Разгледайте настройките
-
Гледайте
Set-Cookie
заглавки -
Тествайте поведение при XSS и CSRF
-
Прегледайте конфигурацията — ще усетите нивото на внимание към сигурността
Питайте и ще ви се отговори
Потърсете “security issues in [framework]” — ще разберете много повече, отколкото от маркетинг страница.
HttpOnly
не е сложна настройка. Но тя може да спре сложна атака. Проверете дали я използвате.