Базовые штуки по безопасности 🔒

Решил написать про XSS-атаки, это одна из самых частых дыр в безопасности, через которую можно украсть данные пользователей.

В чем суть? Злоумышленник может внедрить свой JavaScript в твое приложение, и браузер его выполнит.

Пользователь вводит в комментарий: alert('hack') в теге script.

А ты это вставляешь в DOM через innerHTML - и вуаля, скрипт выполнился.

Простые правила. 🔘 Любые данные от пользователей передавай в DOM только как строки. Если пользователь написал HTML-теги, пусть браузер их отобразит как текст, а не выполнит как код. 🔘 Используй innerText вместо innerHTML - он отображает теги как текст (не всегда «очищает», но для базовой защиты достаточно). 🔘 Всегда проверяй, что вставляешь в DOM. Если HTML нужен, используй специальные библиотеки для санитизации.

Но есть нюансы: иногда нужно разрешить пользователям форматировать текст (жирный, курсив), но запретить выполнение скриптов. В таких случаях innerText не поможет - нужны специальные библиотеки, которые «вычищают» опасные теги, оставляя только безопасные. Осторожно с: innerHTML, outerHTML, Blob, SVG, document.write, DOMParser - все это потенциальные векторы атак. Лучше создавать узлы вручную через document.createElement().

Даже если твой код работает, всегда есть риск, что пользовательские данные попадут в DOM неожиданным образом. Поэтому безопасность должна быть в приоритете с самого начала, а не когда уже поздно.

Как ты защищаешь свои проекты? Или некогда об этом задумываться, тонешь в сроках и во фреймворках? #безопасность #веб #XSS