Тема: Збираємо інформацію стосовно XSRF-атак
Хоча про XSRF-атаки багато років вже чув і знав що це таке, але поверхово.
Зараз прийшов час краще зрозуміти їх. Що нам каже віка? Мені здається з прочитаного можна зробити наступний висновок, хто володіє докладнішою інфою, прохання доповнити мій опис.
Дійові особи
1. браузер користувача, в якому зберігаються всі сесії;
2. в браузері повинна бути актуальна сесія користувача, яка дозволяє заходити на залогінений сайт без додаткового введення паролю; припустимо це буде сайт http://nash-bank.com.ua
3. сайт зловмисника, на який користувач заходить, припустимо це сайт http://goli-divky.com.ua;
4. лінк або картинка на сайті зловмисника, в якому приховано запит на сайт, про який йдеться в другому пункті; припустимо це буде лінк http://nash-bank.com.ua?clien=vasya & perekaz=100000 & komu=zlovmysnyku
Як це працює
1. оскільки користувач, нічого не підозрюючи, просто заходить на сайт http://goli-divky.com.ua і клікає на ціцьки лінк зазначений у нашому четвертому пункті, то відбувається запит на сайт http://nash-bank.com.ua причому цей запит відбувається від імені користувача, з чийого браузера відбувся перехід;
2. також, оскільки сесія на сайті http://nash-bank.com.ua є активною, то відбувається те, що просить наш користувач, тобто clien=vasya perekaz=100000 komu=zlovmysnyku
Як цього уникають
1. найпростіший, але ненадійний спосіб - перевірка referer'а (тобто з якого домена робиться запит); цей спосіб ненадійний, бо реферер легко підробити (так кажуть в інтернеті);
2. оскільки зловмисник може робити лише GET або POST запити, описаним вище способом, і не може читати куки, то генерують додаткові куки і вставляють їх і у форму, яку користувач надсилає, і у куки. Коли сервер отримує запит, то він звіряє чи дійсні куки та чи їхнє значення таке ж як у формі, що надсилається.
3. AngularJS відправляє додаткові заголовки на сервер (замість куків)
Ось десь приблизно так. Але я поки що не знайшов інформації чому AngularJS відправляє свої токени саме через заголовки. З чим куки не справляються?...
Оновлено:
Здається знайшов відповідь на своє питання (стосовно заголовків)