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

от | дек. 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.
Последвайте ни

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

Всички обичат Flutter

„Манджа с грозде“ ще го нарекат много от по-опитните софтуерни инженери, защото за тях си изглежда така. И все пак, платформата Flutter неслучайно е много сериозен хит през последните години. Определено е явление, което се оказа издръжливо и, по всичко личи, ще е...

WordPress 6.0 Arturo е тук с невиждани досега възможности за редакция

WordPress 6.0 Arturo е вече тук с над 1000 подобрения и отстранени бъгове! Втората версия за 2022 г. може да се похвали с по-добро цялостно представяне, по-бързо зареждане на сайта и с над 50 актуализации, свързани с достъпността на платформата. Какво трябва да знаем...

Качествен код. Що е то?

Ако не работите в сферата на софтуерната разработка, може би ще ви звучи странно, че програмистите биват наричани и софтуерни инженери. А в това има много сериозна логика, знаят го всички, които са натрупали определен опит в тази област. Защото писането на компютърен...

5 идеи как да привлечете гости на сайта си

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

Раз, два, тест! Типовете тестване в софтуерния свят

Ако си поговорите с някой от „динозаврите“ в софтуерната индустрия, той ще ви разкаже как само преди няколко десетилетия никой не е обръщал внимание на тестовете и дори не е съществувала професията на QA инженерите. Днес тестовете са основополагащ елемент от...

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

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

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

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

Pin It on Pinterest

Share This