Всичко, което трябва да знаете за сигурността на уеб приложения

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

Web App-Sec
В Web App Security, известен също като Web AppSec, ключовата концепция е да се приложи функционалността на уеб приложение като това как ще се държи, когато е атакувано. Понякога в уеб софтуера има някои дефекти, които могат да бъдат потенциални уязвимости и тези уязвимости могат да бъдат използвани за получаване на данни или контрол върху тях.
Тези уязвимости могат да бъдат намерени в различни части на софтуера. Те могат да бъдат оторизация и удостоверяване, изпращане на формуляри, интеграции на трети страни и много други.

Заплахи и техните корекции
Различни типове атаки, които могат да бъдат направени с помощта на такива уязвимости, са-

SQL инжектиране-
SQL инжектиране (SQLi) е една от най-разпространените техники за хакване. Това включва инжектиране на код, което може да унищожи вашата база данни и нападател може да получи неоторизиран достъп до нея.
Нападател инжектира низ от зловреден код, обикновено SQL заявки, за да поиска някои данни от базата данни. Първо, той изпраща произволни заявки, за да добие представа как е структурирана базата данни и как реагира. След това изпраща заявка, която базата данни може да прочете и която може да бъде съхранена в нея. Например в сайт за електронна търговия нападателят може да изпрати заявка за фалшив потребител заедно с някои други модифицирани свойства. Това им позволява да получат достъп до него и дори понякога го получават като администратор, ако данните не са структурирани добре. Освен получаване на достъп, понякога те инжектират SQL заявки за изтриване на записи, така че да могат да заобиколят удостоверяването.

Видове SQLi-
1. Вътрешен SQLi
2. Изведен SQLi
3. Извънлентов SQLi

Превенция
Това може да бъде предотвратено чрез следване на някои практики, които включват:
1. Даване на подходящо обучение на разработчиците за това как трябва да предотвратяват подобни атаки.
2. Най-добър съвет е никога да не зависи от въвеждането на потребителя, винаги да проверява това въвеждане и да прилага обработка на грешки.
3. Следвайте всички конвенции за сигурност.
4. Дизайнът на данните и тяхната структура трябва да бъдат подобрени.
5. Използвайте разрешен списък вместо блокиран списък и извършвайте редовни сканирания за сигурност.

Неработещо удостоверяване-
Неработещото удостоверяване също е посочено в проекта за сигурност на онлайн уеб приложенията (OWASP) и обикновено се комбинира с управлението на сесии.
Уязвимостите при нарушено удостоверяване и управление на сесии се дължат на Лоша идентичност, контрол на достъпа и лошо валидиране и обработка на грешки. Това увеличава риска от неоторизиран достъп и други атаки срещу уеб приложението. Такива уязвимости могат да бъдат използвани чрез следните атаки-

  • Фишинг и Keylogging,
  • Пълнене на удостоверения,
  • Пръскане на парола,
  • Бисквитки и кражба на самоличност,
  • XSS и др.

Примери за атаки с нарушено удостоверяване и управление на сесии са-
1. Отвличане на ID на сесия
2. Атаки с фиксиране на сесия
3. Атаки с груба сила

Предотвратяване
Предотвратяването на всички тези атаки може да се извърши с помощта на някои най-добри практики, като например-
1. Активиране на многофакторно удостоверяване
2. Политики за силни пароли
3. Използване на уеб защитна стена
4. Ограничаване на опитите за влизане
5. Проверка на сигурна сесия

Cross Site Scripting (XSS)-
Cross Site Scripting, известен като XSS, също е вид атака чрез инжектиране, при която нападателят инжектира уеб скрипт в сайта и тези скриптове се изпълняват, когато някой друг потребител попада на същия сайт.
Другият потребител, който сега използва сайта, вече има инжектирания скрипт в своя браузър и браузърът не знае дали този скрипт е надежден или не и в резултат на това ще изпълни този скрипт заедно с други и нападателят ще получи всички данни, които е поискал чрез този скрипт. Тези скриптове са толкова мощни, че могат да извличат бисквитки, токени и дори могат да пренапишат HTML страницата.

XSS може да бъде разделен на 2 типа-
1. XSS от страната на клиента
2. XSS от страната на сървъра

Освен това те са от 3 типа-
1. DOM базиран XSS (Тип-0)
2. Отразен XSS (Тип-1)
3. Съхранен XSS (Тип-2)

XSS от страна на клиента-
Клиентски XSS възниква, когато ненадеждни потребителски данни се използват за актуализиране на DOM (документен обектен модел) с опасно JavaScript извикване. Извикването на JavaScript се счита за опасно, ако може да се използва за въвеждане на валиден JavaScript в DOM. Този източник на тези данни може да е от DOM или да е изпратен от сървъра. Като такъв можете да имате както XSS на отразен клиент, така и XSS на съхранен клиент.

XSS от страната на сървъра-
XSS на сървъра възниква, когато ненадеждни данни, предоставени от потребителя, са включени в HTTP отговор, генериран от сървъра. Източникът на тези данни може да бъде от заявката или от съхранено местоположение. Като такъв можете да имате както XSS на отразен сървър, така и XSS на съхранен сървър.

Предотвратяване
XSS атаките обикновено се правят там, където има обратна връзка от потребителите на сайта. Можете да защитите тези атаки чрез-
1. XSS на клиента се причинява, когато се използват ненадеждни данни за актуализиране на DOM с опасно JavaScript извикване. Най-лесната и силна защита срещу клиентски XSS е използването на Safe JavaScript APIs.
2. Сървърният XSS се причинява от включването на ненадеждни данни в HTML отговор. Най-лесната и силна защита срещу Server XSS в повечето случаи е чувствително към контекста изходно кодиране от страна на сървъра.

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

Други атаки-
Има и някои други атаки, като например атаки за преминаване на пътя, атаки за отказ на услуга (DOS), дистанционно изпълнение на команди, RFI/LFI и т.н. и много други.
Обичайните начини да се отървете от тях е да следвате някои стандарти за сигурност като-

  • По-добро управление на бисквитките и кеша.
  • Внедряване на CORS в API.
  • Валидации на входа.
  • Използване на силни пароли.
  • Добро проектиране и маршрутизиране.
  • Тестване на софтуер.

Заключение
И така, накратко, моралът на историята е, че има различни уеб атаки за различни цели на различни нива и могат да бъдат извършени по много начини. От нас зависи как можем да защитим нашето уеб приложение и данни от такива нападатели.
Ето някои важни точки, които могат да помогнат за цялостната защита на нашето приложение-

  • Следвайте всички стъпки в жизнения цикъл на разработка на софтуер (SDLC), направо от проектирането до тестването.
  • Правилното тестване на уеб сигурността е важно.
  • Трябва да се правят редовни сканирания за сигурност или тестове за проникване.

Надявам се, че тази статия ви е помогнала. Приятен ден :)