Междусайтовите скриптове (XSS) е вид експлоат за сигурност, който позволява на нападателите да инжектират злонамерени скриптове в уебсайтове, използвайки клиентски код. Той представлява значителна заплаха, тъй като нападателите могат да го използват, за да се представят за потребители, да получат достъп до чувствителни данни или дори да променят съдържанието на страницата на уебсайта.

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

Как работи междусайтовите скриптове?

Преди да разберете как работи скриптовете между сайтове, важно е да знаете какво означава политиката за същия произход (SOP). SOP е политика на механизма за сигурност, която ограничава уебсайт (един произход) от четене или писане до друг уебсайт (от различен произход). Той не позволява на злонамерените уебсайтове да изпращат зловреден код до надеждни уебсайтове.

instagram viewer

Атаките с междусайтови скриптове се опитват да заобиколят тази политика, като използват неспособността на браузъра да прави разлика между легитимен HTML и злонамерен код. Например, нападател може да инжектира JavaScript код в целевия уебсайт. Да предположим, че браузърът изпълнява кода и нападателят получава достъп до токени за сесия, бисквитки и други чувствителни данни.

Има три вида на скриптове между сайтове, които хакерите използват за разбиване на уебсайтове: отразено, съхранено и DOM XSS.

Как да предотвратите междусайтовите скриптове в Node

Следват някои стъпки, които можете да предприемете, за да предотвратите междусайтовите скриптове в Node.

Дезинфекцирайте входа

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

Например, можете да използвате валидатор за избягване на HTML тагове при въвеждане на потребителя, както е по-долу.

внос валидатор от "валидатор";
нека userInput = `Джейн <скрипт onload="тревога('XSS хак');"></script>`;
позволявам sanitizedInput = validator.escape (userInput);

Ако трябваше да стартирате горния код, дезинфекцираният изход ще бъде това.

Джейн &lt; скрипт onload=&quot; тревога(&#x27;XSS хак&#x27;);&quot;&gt;&lt;&#x2F; скрипт&gt;

Ограничете въвеждането на потребителя

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

Прилагане на политика за бисквитки само за HTTP

Бисквитките съхраняват данни в локален кеш и го изпратете обратно към сървъра чрез HTTP. Но нападателите могат да използват и JavaScript за достъп до тях през браузъра, така че са лесни мишени.

Бисквитката само за HTTP е политика, която не позволява на скриптовете от страна на клиента да имат достъп до данни за бисквитки. Това означава, че дори ако приложението ви съдържа уязвимост и нападател я експлоатира, те няма да имат достъп до бисквитката.

Ето пример за това как можете да приложите политиката за бисквитки само за HTTP в Node.js с помощта на Express:

ап.използвайте(експресно.сесия({
тайна: "тайна",
бисквитка: {
httpOnly: вярно,
защитено: вярно
}
}))

Ако нападател се опита да получи достъп до бисквитката с httpOnly tag, зададен на true, както е показано по-горе, те ще получат празен низ.

Скриптовете между сайтове са лесна мишена за хакери

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