Частые уязвимости Frontend и Backend приложений на JS
HTML-код
- Опубликовано: 1 июн 2024
- Посмотрим на то, какие уязвимости могут возникать в ваших backend и frontend приложениях на примере JavaScript, TypeScript, Node.js и Nest.js. Конечно большинство из этого справедливо и для других языков.
🔗 Ссылки:
🎉 Курсы по JavaScript:
- Базовый: purpleschool.ru/course/javasc...
- Продвинутый: purpleschool.ru/course/javasc...
🎓 Мои курсы по разработке: purpleschool.ru
💬 Telegram канал с полезными советами: t.me/purple_code_channel
Разделы видео:
0:00 - Введение
0:11 - О чём будем говорить?
1:04 - Структура проекта
2:08 - Уязвимость при обновлении данных
5:32 - Уязвимость host
8:37 - Утечка env
10:41 - Исполнение js при редиректе
13:06 - Заключение
🔗 Ссылки:
🎉 Курсы по JavaScript:
- Базовый: purpleschool.ru/course/javascript-basics
- Продвинутый: purpleschool.ru/course/javascript-advanced
🎓 Мои курсы по разработке: purpleschool.ru
💬 Telegram канал с полезными советами: t.me/purple_code_channel
крутой и полезный видеоурок, спасибо
Спасибо!
В целом, мораль такова, что нужно проверять все входящие данные, потому что их все можно подменить, а также следить за переполнениями буферов (слишком большие запросы) и частыми запросами, которые могут быть или брутфорсом или ддосом.
Очень полезный видео урок спасибо
Спасибо!
спасибо! очень полезное видео!
Пожалуйста!
спасибо, полезно
Пожалуйста!
А разве в первом примере нет broken access уязвимости? Id не из параметра должен браться а по токену, иначе юзер может кому угодно заменить данные
Совершенно верно)
а если у пользователя был бы uuid? Хотя да в примере конечно указан тип number.
Спасибо за ролик, хотелось бы добавить, что метод POST используется для создания новой записи, а не обновления. Тут лучше подойдёт метод PATCH/PUT
👍
В первом случае даже не понял, что не так, потому что привык, что на глобальном validationPipe висит { forbidNonWhitelisted: true }, и соответственно ничего лишнего передать нельзя. Но да, он же не везде прописан... интересное видео.
👍
Во втором примере, если веб-сервер настроен на нужный Host, то никакой подмены там быть не может. Запрос просто не дойдет до обработчика, веб-сервер не пропустит.
Host это просто заголовок, который можно подменить при запросе, скажем браузерным расширением.
@@PurpleSchool Дааа, По моему даже в Postman это можно добавить ))
❤❤❤
❤️
Фиксится ли проверка на хост используя cors origin?
Если несколько доменов, то да, можно прописать их в CORS
Насчёт уязвимости в фронте, этот же токен можно же взять с cookie или же с линка который пришел для сброса пароля
какую тему ide вы используете?
Чувак это Neovim какой то, будешь в ИТ лет эдак 30, может перейдешь, а сейчас не советую )))
Это тема OneDark для NeoVim, сборка NVChad
@@mur3636 в айти уже лет 5, юзаю vscode)
А почему ты используешь express под капотом а не fastify?
Часто так как не требуется такой высокой производительности, а библиотек, которые работают с express больше.
а можно подробнее про "javascript://" схему в URI ? я что-то не нагуглил такого сходу...
UPD: ага, нашёл, en.wikipedia.org/wiki/List_of_URI_schemes - но тут "javascript:" ну то есть без правых слэшей и это "IETF Draft" указано, ну то есть не стандарт получается? 🙂
все что с host связано каким образом навредит другим пользователям?
юзер должен с этими поддельными данными придти уже
Другим пользователям нет. Например подменив заголовок с помощью расширения браузера у ничего не знающего пользователя злоумышленник сможет отправить его на сайт мошенника.
По моему уязвимость появляется при наборе npm i
Без пакетов ничего не напишешь)
пора менять петличку
Примеры были бы более наглядны, если бы ты реально их продемонстрировал...
Да зачем. Этот чувак сам с собой разговаривает. Это и бесит в его курсах когда он загоняется и начинает рассуждать накручивая примеры программирования. А у новичка мозг кипит. Бросил его курс по ноде на середине нафиг🤦
Вполне наглядный пример
Я бы не сказал, что это уязвимости, это скорее ошибки разработчиков. То есть они банальны, и чтобы их не допустить достаточно просто детальней обдумать таску и почитать на 3 предложения больше в доке, чем обычно)
Ошибка разработчиков как раз приводят к уязвимостям)
Какая муть этот нест. Для валидации ничего лучше ajv не придумали.
Вы можете в Nest использовать любую библиотеку валидации
Такая муть этот ajv. Для валидации ничего лучше ООП не придумали.
Мне кажется, перебивка у тебя дурацкая, вообще не подходит под тематику канала, слишком весёлая и где-то я её уже слышал. От неё ощущение, что сейчас будет зажигательный контент, путешествие по горячей Мексике, закуской из буритос, а получаешь тоже интересную, но совсем другую информацию об уязвимостях JS-приложений.