6. Веб форми

Веб-форми являють собою основний елемент веб-сторінки, як інтерфейсу користувача програми, який взаємодіє з веб-додатком на сервері - передає дані з форми в програму. І тому обробці даних з форм (зважаючи на питання безпеки веб-сайту) потрібно приділити особливу увагу.

6.1. Типи даних

З форми на сервер можуть передаватися наступні дані:

  • назви елементів інтерфейсу
  • значення текстового поля в один рядок
  • значення текстового поля в багато рядків
  • пароль
  • значення вибраної радіо кнопки
  • значення вибраних чекбоксів
  • значення вибраного елемента комбобокса
  • файл
  • інші параметри, які передаються як приховані (hidden) або напряму через URL запиту

Передача даних з форми може відбуватися наступними методами:

  • GET
  • POST

6.2. Обробка вхідних даних

Всі передаваємі дані потрібно обробляти, і робити це потрібно коректно. Не можна залишати без уваги хоча б один параметр, особливо у випадку передачі імені файла, або інших важливих змінних, які потім використовуються програмою. Кожен з параметрів потрібно перевіряти на коректність.

Потрібно вводити граничні умови (особливо для важливих елементів), при перевірці яких, вихід за межі умов, буде вважатися некоректним введенням даних з форми (випадковим або навмисним - якщо це хакерська атака). При некоректних вхідних даних, потрібно видавати повідомлення користувачу, щоб він повторив процес введення даних, з вказанням які конкретно поля форми були введені некоректно.

Основні положення обробки вхідних даних я розглянув у розділі Основи безпеки CGI скриптів.

6.3. Стандартні проблеми

Стандартними проблема з обробкою вхідних даних з веб форм являються:

  • Передача паролю та інших важливих даних у відкритому вигляді (методом GET)
  • Недостатня обробка вхідних даних:
    • відсутність обробки нульового байту
    • відсутність обробки символи рівня директорій
    • відсутність перевірки на граничні умови
  • Необережна робота з файлами, у випадку коли ім’я файлу передається програмі від користувача
  • Необережна робота з системними утилітами, коли їм при визові у якості параметрів передаються дані з форми
  • Не врахування особливостей GET та POST запитів, коли користувач може змінювати параметри, які по логіці роботи програми, йому змінювати не дозволено
  • Не врахування того моменту, що дані прихованого типу (hidden), доступні для досвідченого користувача як для перегляду, так і для підміни (у випадку коли не робиться відповідна перевірка, так як апріорі не можна вважати, що дані прихованого типу дійдуть до програми в незмінному вигляді), чим може скористатися зловмисник

Виникнення подібних ситуацій може привести до несанкціонованого доступу до інформації або до пошкодження зловмисником інформації на сервері або навіть до повного контролю на сайтом чи веб-системою. Тому при розробці веб-додатків слід приділити пильну увагу процесу обробки вхідних даних з форм.

Зауваження та рекомендації щодо обробки паролів читайте в розділі Паролі, а інформацію стосовно особливостей обробки вхідних даних читайте в розділі Основи безпеки CGI скриптів.

 

Перейти до Змісту