Скриптовање на више локација (КССС) је врста безбедносне експлоатације која омогућава нападачима да убаце злонамерне скрипте на веб локације користећи клијентски код. Представља значајну претњу јер га нападачи могу користити за лажно представљање корисника, добијање приступа осетљивим подацима или чак промене садржаја странице на веб локацији.

Толико је опасно да је 2021. био број два на заједничкој листи за набрајање слабости 25 најопаснијих слабости. То значи да ако креирате веб локације, морате знати о скриптовању на више локација и како то спречити.

Како функционише скриптовање на више локација?

Пре него што схватите како функционише скриптовање на више локација, важно је знати шта значи политика истог порекла (СОП). СОП је политика безбедносног механизма која ограничава веб локацију (једног порекла) од читања или писања на другу веб локацију (другог порекла). Спречава злонамерне веб локације да шаљу злонамерни код на поуздане веб локације.

Напади скриптовања на више локација покушавају да заобиђу ову политику искоришћавањем немогућности прегледача да направи разлику између легитимног ХТМЛ-а и злонамерног кода. На пример, нападач може да убаци ЈаваСцрипт код у циљну веб локацију. Претпоставимо да претраживач изврши код, а нападач добије приступ токенима сесије, колачићима и другим осетљивим подацима.

Постоје три врсте скриптовање на више локација које хакери користе за разбијање веб локација: рефлектовано, сачувано и ДОМ КССС.

Како спречити скриптовање на више локација у Ноде-у

Следе неки кораци које можете предузети да спречите скриптовање на више локација у Ноде-у.

Санитизе Инпут

Нападачи морају бити у могућности да пошаљу податке вашој веб апликацији и прикажу их кориснику да би извршили КССС напад. Стога, прва превентивна мера коју морате да предузмете је дезинфекција свих података које ваша апликација добија од својих корисника. Ово је кључно јер открива лажне податке пре него што их сервер изврши. То можете урадити ручно или користити алат као што је валидатор што чини процес бржим.

На пример, можете користити валидатор да бисте избегли ХТМЛ ознаке у корисничком уносу као испод.

увоз валидатор из "валидатор";
нека усерИнпут = `Јане <сцрипт онлоад="упозорење ('КССС хацк');"></script>`;
дозволити санитизедИнпут = валидатор.есцапе (усерИнпут);

Ако бисте покренули горњи код, санирани излаз би био ово.

Јане &лт; сцрипт онлоад=&куот; упозорење (&#к27;КССС хак&#к27;);&куот;&гт;&лт;&#к2Ф; скрипта&гт;

Ограничите унос корисника

Ограничите тип уноса који корисник може да унесе у ваш образац путем валидације. На пример, ако имате поље за унос за имејл, дозволите унос само у формату е-поште. На овај начин минимизирате шансе да нападачи доставе лоше податке. За ово можете користити и пакет валидатора.

Имплементирајте само ХТТП политику колачића

Колачићи чувају податке у локалној кеш меморији и пошаљите га назад на сервер преко ХТТП-а. Али нападачи такође могу да користе ЈаваСцрипт да им приступе преко претраживача, тако да су лака мета.

Колачић само за ХТТП је политика која спречава скрипте на страни клијента да приступе подацима колачића. То значи да чак и ако ваша апликација садржи рањивост и нападач је искористи, неће моћи да приступи колачићу.

Ево примера како можете да примените политику колачића само за ХТТП у Ноде.јс користећи Екпресс:

апликација.усе(изразити.седница({
тајна: "тајни",
колачић: {
хттпОнли: истинито,
сигуран: истинито
}
}))

Ако је нападач покушао да приступи колачићу са хттпОнли таг постављен на труе као што је приказано изнад, они би примили празан стринг.

Скриптовање на више локација је лака мета за хакере

Иако је сигурност ваше апликације кључна, њена имплементација може бити компликована. У овом посту сте научили о нападима скриптовања на више локација и како их можете спречити у Ноде-у. Пошто нападачи користе предности рањивости у вашој апликацији за убацивање злонамерног кода у ваш сервер, увек се побрините да дезинфикујете унос корисника. На тај начин уклањате злонамерни код пре него што га ваша апликација сачува или изврши.