Ама сигурни ли сте? Валидация преди всичко!

от | дек. 2, 2021 | Сигурност

Правим го по хиляди пъти всеки ден. Отваря се някакво поленце на поредния сайт, попълваме, засилваме нататък и после пак… Не, няма пак, защото нещо не сме уцелили и страницата ни спира да продължим.

Валидацията на данни е основополагащ принцип за днешните сайтове. Важна парадигма за всеки, който се занимава с програмиране, независимо дали е в света на фронтенд или на бекенд решенията. Какво точно е валидацията? Кои са най-важните правила? Защо дори и най-големите сайтове понякога се провалят в начинанието да филтрират въведената информация? Ще се опитаме да намерим отговорите заедно в следващите редове.

А те със сигурност ще са ви интересни, ако сте собственик на сайт, или планирате да станете такъв (опитайте с безплатния ни хостинг тук!). Или пък, ако сте решили да се насочите към програмирането и сте поели по първите стъпки на тази професия. Защото валидацията на данни е уж тривиално начинание, което обаче трябва винаги да се изпълнява внимателно и много лесно може да ви създаде проблеми.

 

Нека да вали

Защо е важна правилната валидация? Поради безброй причини. И все пак, основна си остава първоначалната цел на принципа. Просто да сме сигурни, че потребителят е въвел във въпросните полета точно това, което се очаква да въведе. Че не се е объркал, че не е оставил празно задължително поле, заради което няма как да се свържем с него и да му доставим стоката, например. Че не е изпълнил с цифрите от телефона си поленцето, в което се е очаквало да попълни адреса, ръста или пола си.

Валидацията съвсем не спира до фронтенда, до самите формички, които се показват. Тя е още по-важна „от другата страна“ на уеб технологиите – в бекенда, където основната цел е защитата. Защото недобре вализираните данни могат да причинят много сериозни щети. Именно на такъв тип невнимание се крепят едни от най-честите атаки срещу киберсигурността, като например SQL Injection. Ако данните от потребителската форма могат да се превърнат и в заявка към базата данни, която крие неподозирани опасности, резултатите могат да станат наистина опасни.

 

Зелен сертификат

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

Така че, на първо място идва нуждата да е сигурно, че няма очевидни грешки. Тъй като все по-голяма част от онлайн животът ни днес минава през апликациите в браузъра, до голяма степен днес тази задача е отговорност на фронтенд апликацията. Тук най-често се следи за това какъв е типът данни за съответно поле, добавят се и валидации, които са свързани с конкретното очаквано съдържание. Например, ако се очаква да бъде въведена държава, стойността да попада в рамките на определен списък.

Ако целта е съдържанието да бъде по някакъв начин прецизирано – да е с определена минимална или максимална дължина например, това също се взема предвид. Понякога се прави и асинхронна валидация – това ще рече, че зададените данни по някакъв начин се проверяват чрез заявка онлайн. Например, дали въведеният IBAN наистина съществува, веднага става ясно, ако бъде „попитана“ съответната онлайн услуга. Често решение са и регулярните изрази, тази толкова обичана и същевременно мразена от програмистите практика. Чрез тях текстът се валидира на базата на особен набор от правила, но логиката им е доста особена, затова си оставяме възможността да поговорим за тях следващ път.

Всяка допълнителна, добре и на място измислена логика е добре дошла. Например, надали се очаква дадена форма да бъде попълнена от потребител, който е роден преди 1900-ата година, затова е добре да ограничим входните данни за това поле. И от другата страна нещата стоят по сходен начин – надали потребителят ви е роден по-късно от 2015-а. Своеобразни правила могат да се намерят за всяко поле. Но с тях и да се внимава, защото пък със същите правила като нищо може да направите формата неизползваема, ако се очаква да се въведат данни на деца от детска ясла.

 

За всяка грешка има и прошка

Всъщност, до голяма степен подобни са и валидации, които правят бекенд архитектурите. С изключение на асинхронните заявки, защото от бекенда се очаква да отговори веднага и той много рядко „има време“ да се „съветва“ с чужди сървъри. Разликата при валидацията от двете страни на уеб технологиите обаче съвсем не е малка. Задачата на фронтенда като цяло е да улесни потребителя, да му дава правилните „жокери“ за това как да се справи. Да му посочи, че въведената стойност не е правилна, да го улесни.

От другата страна – в бекенда, по-важното е защитата. Да, полезно е да се върне отговор, ако например сбърканото поле е невалиден телефон, както го изискват и правилата на REST архитектурата. И все пак, на първо място е защитата на данните. Много по-важно е да не се издаде информация, която не бива (както гласят и правилата на сигурността чрез неизвестност).

Към всички тези особености е редно да добавим и „почистването“. Валидацията отчасти включва и „обезопасяването“ на въведените данни, така че те да не могат да нанесат щета. На първо място, това значи, че не бива да бъде въвеждан злонамерен код, който може да бъде изпълнен, нито пък да се позволя препращането към съмнителни сайтове. На английски даже го наричат дезинфекция (sanitize), което е дори по-точно метафорично, защото помага като превенция срещу вируси и други зловредни за апликацията ни вредители.

 

Важи!

Важно е и да отделим двата ключови термина в този процес – верификацията и валидацията. Докато в първия случай данните се проверяват за това дали изпълняват коректно дадени условия, или не, при валидацията, както стана дума, важното е да се осигури едновременно коректност, използваемост и безопасност на дадени данни.

С това се изчерпват общите правила на валидацията на данни. Оттук нататък е умението на програмистите „от двете страни“ да ги съобразят с конкретните нужди на проекта, да го правят удобно за потребителите и авторитетно за безопасността им.

А ако наистина сте се насочили към програмирането, със сигурност е добре да обърнете внимание на сигурността в живота онлайн. В едноименната секция в блога на ZETTAHOST.bg ще намерите поредица от публикации по всяка от най-важните точки на тази тема. След това можете да ги изпитате и на практика с помощта на безплатния ни, неограничен във времето хостинг. Програмирането е приключение, убедете се сами!

<a href="https://www.zettahost.bg/author/georgik/" target="_self">Георги Караманев</a>

Георги Караманев

Георги е журналист, писател и Front-end програмист – част от екипа на ZETTAHOST.bg. Има повече от 15 години опит в подготвянето на публикации на технологична тематика за Списание 8, в. „24 часа“ и други медии. През 2019 г. и 2021 г. получи наградите в категория „Технологии и иновации“ от конкурса на Dir.bg за чиста журналистика Web Report.
Последвайте ни

Най-нови публикации:

ChatGPT: 6 ползи от изкуствения интелект за онлайн бизнеса

ChatGPT може да се превърне в тайното оръжие за вашия онлайн бизнес. От изготвянето на съдържание за сайта, през анализа на данни до съставянето на бизнес план, платформата предлага различни решения, а ние ви представихме 6 от основните ползи на изкуствения интелект.

Личен сайт безплатно!

Регистрирай се безплатно и си направи сайт още днес.

Безплатната хостинг услуга на ZETTAHOST.bg няма скрити такси и изисквания за ползване.

Безплатен хостинг

Pin It on Pinterest

Share This