Частые уязвимости 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 - Заключение

Комментарии • 46

  • @PurpleSchool
    @PurpleSchool  9 месяцев назад +2

    🔗 Ссылки:
    🎉 Курсы по JavaScript:
    - Базовый: purpleschool.ru/course/javascript-basics
    - Продвинутый: purpleschool.ru/course/javascript-advanced
    🎓 Мои курсы по разработке: purpleschool.ru
    💬 Telegram канал с полезными советами: t.me/purple_code_channel

  • @auranode4542
    @auranode4542 9 месяцев назад +5

    крутой и полезный видеоурок, спасибо

  • @-dubok-
    @-dubok- 2 месяца назад

    В целом, мораль такова, что нужно проверять все входящие данные, потому что их все можно подменить, а также следить за переполнениями буферов (слишком большие запросы) и частыми запросами, которые могут быть или брутфорсом или ддосом.

  • @vadimsupe
    @vadimsupe 9 месяцев назад +1

    Очень полезный видео урок спасибо

  • @apristen
    @apristen 7 месяцев назад +1

    спасибо! очень полезное видео!

  • @raff_m_d6971
    @raff_m_d6971 9 месяцев назад

    спасибо, полезно

  • @daveyjonesx
    @daveyjonesx 9 месяцев назад +5

    А разве в первом примере нет broken access уязвимости? Id не из параметра должен браться а по токену, иначе юзер может кому угодно заменить данные

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад +1

      Совершенно верно)

    • @al77ex1
      @al77ex1 9 месяцев назад

      а если у пользователя был бы uuid? Хотя да в примере конечно указан тип number.

  • @yevheniiakimov2967
    @yevheniiakimov2967 7 месяцев назад

    Спасибо за ролик, хотелось бы добавить, что метод POST используется для создания новой записи, а не обновления. Тут лучше подойдёт метод PATCH/PUT

  • @user-yg8hn4it3c
    @user-yg8hn4it3c 9 месяцев назад +1

    В первом случае даже не понял, что не так, потому что привык, что на глобальном validationPipe висит { forbidNonWhitelisted: true }, и соответственно ничего лишнего передать нельзя. Но да, он же не везде прописан... интересное видео.

  • @hanasugisakimusiji
    @hanasugisakimusiji 9 месяцев назад +2

    Во втором примере, если веб-сервер настроен на нужный Host, то никакой подмены там быть не может. Запрос просто не дойдет до обработчика, веб-сервер не пропустит.

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад

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

    • @aximas778
      @aximas778 9 месяцев назад

      @@PurpleSchool Дааа, По моему даже в Postman это можно добавить ))

  • @HEX_CAT
    @HEX_CAT 9 месяцев назад

    ❤❤❤

  • @ivanbosak8949
    @ivanbosak8949 9 месяцев назад

    Фиксится ли проверка на хост используя cors origin?

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад

      Если несколько доменов, то да, можно прописать их в CORS

  • @aximas778
    @aximas778 9 месяцев назад +3

    Насчёт уязвимости в фронте, этот же токен можно же взять с cookie или же с линка который пришел для сброса пароля

  • @yevhenii9967
    @yevhenii9967 9 месяцев назад

    какую тему ide вы используете?

    • @mur3636
      @mur3636 9 месяцев назад

      Чувак это Neovim какой то, будешь в ИТ лет эдак 30, может перейдешь, а сейчас не советую )))

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад +1

      Это тема OneDark для NeoVim, сборка NVChad

    • @yevhenii9967
      @yevhenii9967 9 месяцев назад

      @@mur3636 в айти уже лет 5, юзаю vscode)

  • @KravetsFamily
    @KravetsFamily 9 месяцев назад

    А почему ты используешь express под капотом а не fastify?

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад +1

      Часто так как не требуется такой высокой производительности, а библиотек, которые работают с express больше.

  • @apristen
    @apristen 7 месяцев назад

    а можно подробнее про "javascript://" схему в URI ? я что-то не нагуглил такого сходу...
    UPD: ага, нашёл, en.wikipedia.org/wiki/List_of_URI_schemes - но тут "javascript:" ну то есть без правых слэшей и это "IETF Draft" указано, ну то есть не стандарт получается? 🙂

  • @user-ss9qn2xk9x
    @user-ss9qn2xk9x 9 месяцев назад

    все что с host связано каким образом навредит другим пользователям?
    юзер должен с этими поддельными данными придти уже

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад

      Другим пользователям нет. Например подменив заголовок с помощью расширения браузера у ничего не знающего пользователя злоумышленник сможет отправить его на сайт мошенника.

  • @dmitripolevoi4473
    @dmitripolevoi4473 9 месяцев назад +1

    По моему уязвимость появляется при наборе npm i

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад

      Без пакетов ничего не напишешь)

  • @vladislavtomasciuc8273
    @vladislavtomasciuc8273 9 месяцев назад

    пора менять петличку

  • @EdwardNorthwind
    @EdwardNorthwind 9 месяцев назад +2

    Примеры были бы более наглядны, если бы ты реально их продемонстрировал...

    • @ioannhide3355
      @ioannhide3355 9 месяцев назад

      Да зачем. Этот чувак сам с собой разговаривает. Это и бесит в его курсах когда он загоняется и начинает рассуждать накручивая примеры программирования. А у новичка мозг кипит. Бросил его курс по ноде на середине нафиг🤦

    • @user-qe9hk1qz7d
      @user-qe9hk1qz7d 7 месяцев назад

      Вполне наглядный пример

  • @eugenefedoryachenko8793
    @eugenefedoryachenko8793 9 месяцев назад +2

    Я бы не сказал, что это уязвимости, это скорее ошибки разработчиков. То есть они банальны, и чтобы их не допустить достаточно просто детальней обдумать таску и почитать на 3 предложения больше в доке, чем обычно)

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад +1

      Ошибка разработчиков как раз приводят к уязвимостям)

  • @dmitriy4415
    @dmitriy4415 9 месяцев назад

    Какая муть этот нест. Для валидации ничего лучше ajv не придумали.

    • @PurpleSchool
      @PurpleSchool  9 месяцев назад +1

      Вы можете в Nest использовать любую библиотеку валидации

    • @eugenefedoryachenko8793
      @eugenefedoryachenko8793 9 месяцев назад

      Такая муть этот ajv. Для валидации ничего лучше ООП не придумали.

  • @-dubok-
    @-dubok- 2 месяца назад

    Мне кажется, перебивка у тебя дурацкая, вообще не подходит под тематику канала, слишком весёлая и где-то я её уже слышал. От неё ощущение, что сейчас будет зажигательный контент, путешествие по горячей Мексике, закуской из буритос, а получаешь тоже интересную, но совсем другую информацию об уязвимостях JS-приложений.