Обережно, HTML5

HTML5 відкриває широкі можливості для розробників web-ресурсів. Однак не варто забувати, що ці можливості відкриваються не тільки для власників ресурсів, але і для різного роду шахраїв. Хочу поділитися невеликим наглядом, як необдумана тяга до нових технологій може вдарити по безпеці ваших користувачів.


Існуюча проблема з безпекою зберігання локальних даних в HTML5 ні для кого не секрет. Однак, для кращого розуміння, я нагадаю. HTML5 дозволяє зберігати локально дані в localStorage і в WebDatabase. Доступ до цих даних можливий з Javascript. Розмежування прав доступу до сховищ побудовано на поєднанні протокол + домен + порт. Очевидно, що несанкціонований доступ до цих даних можна отримати, змусивши відвідати користувача сайт за адресою відповідним потрібним нам протокол + домен + порт. І розмістити на ньому javascript код, який вважає потрібні нам дані і відправить їх на сервер. Досягти цього можна, використовуючи добре перевірені способи:

  • Використовуючи DNS або ARP-spoofing;
  • Маючи доступ до мережевого обладнання;
  • Використовуючи HoncePot у вигляді безкоштовної WiFi точки доступу або вихідної ноди Tor мережі;
  • За допомогою шпигунського ПЗ.

Набір інструментів досить широкий і, очевидно, використовувати HTML5-сховище для розміщення критичних для безпеки даних просто не можна. Я був дуже здивований, коли на одному відомому ресурсі в локальній базі даних я виявив зберігається там секретний ключ, який використовується в механізмі автентифікації. «Ой», - сказав я! Але потім подумав: «Напевно, вони передбачають використання цього механізму тільки за HTTPS». Так, з HTTPS ця схема вже краще виглядає, частина наведених вище методів не спрацює (звичайно, на сайті варто було б написати про це великими літерами). Але я став копати далі і знову засмутився. Головна сторінка сайту містить скрипти HTTP, що зводять достоїнства HTTPS до нуля - ключ також може бути вкрадений. Треба все ж зазначити, що розкриття цього ключа не дає безпосереднього доступу до ресурсу, ключ є лише доповненням до пароля.

Вважаю, при розробці додатків на HTML5 треба з більшою обережністю відноситься до зберігання приватних даних в локальному сховищі.