Як створити захищені веб-форми: перевірка, дезінфекція та контроль

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

Для певних потенційно руйнівних вразливостей, таких як введення SQL та міжсайтовий сценарій (XSS), продуманий користувальницький інтерфейс є першою лінією захисту.

Ось декілька областей, на які слід звернути увагу розробникам-розробникам, які хочуть допомогти в боротьбі за добру боротьбу.

Керування введенням користувача

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

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

Хоча це може бути не інтуїтивно зрозумілим, навіть дані, які користувач надсилає до власної області на сайті, повинні перевірятися. Одним з найшвидших вірусів, що розповсюдився, був черв'як Самі на MySpace (так, я вже старий), завдяки коду, який Самі Камкар зміг внести на свою сторінку профілю. Не повертайте безпосередньо будь-які дані на свій сайт без ретельної перевірки чи санітарії.

Детальніші вказівки щодо боротьби з ін’єкційними атаками див. У шпаргалці щодо запобігання ін’єкціям OWASP.

Остерігайтеся прихованих полів

Додавання type="hidden"- це привабливо зручний спосіб приховати конфіденційні дані на сторінках і у формах, але, на жаль, не ефективний.

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

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

Уважно розгляньте поля автозаповнення

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

Багато користувачів навіть не знають, яку інформацію зберігає автозаповнення їх браузера. Економно використовуйте ці поля та вимикайте автозаповнення форм для особливо конфіденційних даних.

Важливо також зважити свій профіль ризику та його компроміси. Якщо ваш проект повинен відповідати WCAG, вимкнення автозавершення може призвести до порушення вводу для різних способів. Додатково див. 1.3.5: Визначення цілей введення в WCAG 2.1.

Зберігати помилки загальними

Хоча може здатися корисним повідомити користувачів, чи існує частина даних, це також дуже корисно для зловмисників. Маючи справу з обліковими записами, електронною поштою та ідентифікаційними даними, найбезпечніше помилитися (?) На стороні менше. Замість того, щоб повертати «Ваш пароль для цього облікового запису неправильний», спробуйте більш неоднозначний відгук «Неправильна інформація для входу» та уникайте виявлення, чи ім’я користувача чи електронна адреса в системі.

Для того, щоб бути більш корисним, надайте видатний спосіб зв’язатися з людиною на випадок помилки. Уникайте розголошення інформації, яка не є необхідною. Якщо нічого іншого, ради бога, не пропонуйте дані, які точно відповідають введеному користувачем.

Будь поганим хлопцем

Розглядаючи питання безпеки, корисно зробити крок назад, подивитися інформацію, що відображається, і запитати себе, як зловмисник зможе її використати. Грайте в адвоката диявола. Якби поганий хлопець побачив цю сторінку, яку нову інформацію вони отримали б? Чи подання відображає якусь ідентифікаційну інформацію?

Запитайте себе, чи все, що є на сторінці, насправді необхідно справжньому користувачеві. Якщо ні, відредагуйте або видаліть його. Менше безпечніше.

Охорона починається від вхідних дверей

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