Заголовок X-Frame-Options

22:43 19.11.2011

Після появи такої техніки атаки як Clickjacking, розробленої Джеремією Гроссманом та Робертом Хенсеном в 2008 році, виробники браузерів почали замислюватися над методом протидії даній атаці. Щоб не чекати доки кожен окремий веб розробник почне додавати захист від Clickjacking (а також від MouseOverJacking, розробленої мною), а зробити захист на рівні браузера. Як це зробив розробник NoScript плагіна для Firefox, додавши подібний захист ще в 2008 році.

І на початку 2009 року, з виходом Internet Explorer 8, було розроблене рішення для протидії Clickjacking та MouseOverJacking атакам. Це http-заголовок X-Frame-Options. Це було одне з найкращих покращень безпеки в 2009 році (але в своєму записі я вже описав можливості обходу цього захисного методу). Детально про цей заголовок, його формат та значення заголовка, що підтримуються браузерами, ви можете прочитати на сайті Mozilla в статті The X-Frame-Options response header.

На даний час підтримуються наступні значення заголовка X-Frame-Options:

  • DENY - сторінка (з будь-якого сайта) не може бути показа у фреймі.
  • SAMEORIGIN - сторінка може бути показана у фреймі, якщо вона знаходиться на тому самому сайті (домені).

Спочатку Microsoft реалізувала його в своєму браузері IE8, а потім інші виробники браузерів додали його підтримку. На даний момент, за даними Мозіли, наступні браузери підтримують заголовок X-Frame-Options (починаючи з вказаних версій):

  • Internet Explorer 8.0.
  • Firefox 3.6.9 (Gecko 1.9.2.9).
  • Opera 10.50.
  • Safari 4.0.
  • Chrome 4.1.249.1042.

Метод захисту від Clickjacking та MouseOverJacking атак за допомогою заголовка X-Frame-Options має свої переваги та недоліки.

Переваги методу:

  1. Захист від атак через приховані frame та iframe.
  2. Легкість реалізації на сайті - потрібно лише додати на необхідну сторінку (або на весь сайт) даний заголовок.
  3. Два режима блокування: DENY і SAMEORIGIN.
  4. Всі основні п’ять браузерів (їх останні версії) підтримують даний заголовок.

Недоліки методу:

  1. Веб розробникам і адмінам потрібно додавати його підтримку на сайті, щоб захист спрацював у браузері. Тобто по замовчуванню всі сайти є уразливими до даних атак (навіть у версіях браузерів, що підтримують цей заголовок), доки на них не буде налаштоване виведення цього заголовка.
  2. Методика атак через CSS, що я описав в статті про MouseOverJacking, дозволяє обходити даний захист та може застосовуватися для проведення Clickjacking та MouseOverJacking атак.
  3. Не всі браузери підтримують цей заголовок, в тому числі старі версії основних п’яти браузерів. Тому мільйони користувачів цих браузерів будут незахищені перед атаками, навіть на сайтах, що використовують цей заголовок.

Leave a Reply

You must be logged in to post a comment.