20 критических уязвимостей в программе

    Я думаю самая главная ошибка — между креслом и клавиатурой, но если разбирать больше чем «не заметил» и предположить что новички не совсем знают о критических ошибках которые могут вызвать серъёзные последствия типа потери данных, вызова инородного кода, недоступность сервиса или кражи данных, то чёрный список выстроится следующим образом:
    1. Неверная валидация ввода данных
    2. Неправильная кодировка или отсутсвие обработки данных вывода
    3. SQL-инъекция
    4. Cross-site scripting
    5. Неограниченность в консольном доступе (OS-инъекция)
    6. Передача личных данных по малозащищённому каналу
    7. Межсайтовый запрос как подделка внутреннего запроса
    8. Соревнование потоков использующих один ресурс и неверное закрытие его использования
    9. Слишком информативное содержание об ошибке
    10. Выход указателя программы за пределы отведённой памяти
    11. Внешнее управление внутренними переменными и файловыми путями
    12. Генерируемый код и его потенциальная инъекция
    13. Автообновление программы полученным кодом без подтверждения источника
    14. Грязная инициализация — доступны данные предыдущих инициализаций
    15. Математика с ограниченными числами
    16. Ненадёжная авторизация и за-hard-коденые пароли
    17. Использование подверженного риску или взломанному алгоритму криптографии
    18. Исполнение с повышенными привилегиями
    19. Использование недостаточно случайных чисел
    20. Валидация на стороне клиента но не на стороне сервера
    По мотивам "Top 25 most dangerous programming errors"Оригинал статьи

    Средняя зарплата в IT

    120 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 7 204 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 18

      +2
      Неплохо показать еще примеры, для каждого пункта ;)
        +3
        Ну, эдак нужно по отдельной статье почти на каждый пункт писать… :)
        +2
        Валидация на стороне клиента но не на стороне сервера не является ошибкой в том случае, если параллельно присутствует валидация на сервере :)

          +1
          Может, фразой "но не на стороне сервера" автор именно это и имел в виду?
          +2
          А какая тема… Ведь можно было столько написать по этому поводу… Собственно опытные люди об этом прекрасно знают, а неопытные ничего не поймут.
            +1
            Опытными людьми не рождаются, а становятся из неопытных.
            А такие статьи помогают в данном метаморфозе :)
              +1
              Это не статья — это список уязвимостей без объяснений, что они означают, примеров таких уязвимостей и методов, которые помогают их избежать. Поэтому она и вряд ли чем-нибуть сможет помочь.
                0
                Что не статья, согласен. А что не поможет — не согласен
                  0
                  Ну, вот там по ссылке оригинал статьи на английском (Top25). В этой статье каждая ошибка снабжается подробным описанием и советами — как действовать, чтобы избежать появления этих ошибок в своих разработках.

                  Огромная она, перевести целиком — большой труд. Хотя, если в этой ветке найдутся желающие, можно выполнить коллективный перевод (сами-знаете-где :)).
              0
              А мне картинки понравились: Чтоб у программы гарантированно не было проблем с безопасностью, нужно на самом начальном этапе отказаться от её создания.
                0
                19 ну любые случайные числа генерируемы компом «недостаточно случайны»)) Правда недавно был пост о случайных числах типа курса доллара или счета матча)
                зы картинки действительно забавные
                  +1
                  Ну энтропию можно откуда-то набрать.
                  Классические варианты — временные промежутки между нажатиями клавиш, кликами мышки, активность в локальной сети, шум на микрофонном входе и т.д.
                  Вполне себе случайные вещи (что конечно не освобождает от проверки набранных данных на случайность). Накопив таким образом случайную информацию — можно начинать генерировать действительно случайные числа.

                  В некоторых системах есть специальные аппаратные датчики случайных чисел. Так что не всё так плохо :)
                  0
                  Маловато будет, но уже очень хорошо и полезно. Про ресурсы можно добавить, чтоб подчищали.

                  Вообще когда пишешь в стиле extreme coding(без проектирования и прочего) такая памятка пригодится, чтоб совсем не краснеть за свой говнокод :)

                  PS Давайте каждый, кто знает, где ещё нужно уделять внимание, поделится знаниями.
                  PPS Имхо новичкам тоже очень полезно ;)
                    0
                    закрытие места куда загружаю картинки пользователи от выполнения скриптов
                      0
                      хоть бы ссылку на оригинал…
                        +1
                        будьте внимательней
                          0
                          сначала начал читать, вспомнил вчерашний пост
                          а потом тока в конце увидел ссылку)
                        0
                        не очень структурировано — вот тут гораздо лучше ИМХО
                        capec.mitre.org/data/index.html

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое