---
title: 20 типичных уязвимостей в коде
date: 2009-01-15T10:00
tags: [security, tech, вера]
embedding:
  version: 1
  model: "text-embedding-3-small"
  dimensions: 512
  hash: "sha256:48cef4c27f3204fd38f873fb60c542b446e906a606867ea564c4f6b189482d91"
  vector: "63jqLmHw/vcOETLWCg4P9PTzz+4aBwQhIdxI7UD9DtoO4yz0A+kz7RLzD873Iual/vjGB+YQ+PvsU9cSRPLBBQIdA7gTLygMSApG4vsUNwbr5OTAsQqR0PjRiykTOPreOff+4gHz9/sCuOvSAMyw1YP4LPwX7h3bDOcm4PPlKwjqxD0bQAkZFfcn7AX37woSA+DuL8DhAy7GIcvYJS7TE+4aFxcVChL9ygLezN7YyfEi1yrl3iMsJcyfFO2R7vIK6ugJsgCy6/3f/RzRHgX99vH0LQECBjQaGhAL9Ocq2f0ZK1lWOfwu+Tq0OA41+eNFJCaeEePu4QfyRmIlVOvsqhLRGNvE7MAH3g0TIO+pKigc1t+9HQeURNjZDgdGJtPr7qT7MsrpIQkYMdEFAzLD4c8bC/HjsR7p+w3UqQGjPrfg0hQLwxS6MDTC0pAm5cyM4EwM0dT1GvkX8gG0Gybk+PY0zukINfgi+QwI+jR668UJ89IY2drO8cpHMCDhBRc4SxjnF734Ce/d8EIMFT752y0GlRnO/0P0CgX9ESUMCq0xCdfjMgiv7sUbAdI6ngj60ODVxAL0N//d+NMLEfSu/Sbi+tX21OnGPNHi4N4i1D5F/cIGSdnm9ccNEtv9AxAV9+ge2e1m9hEXKNruf/MBB+n77use4Kv5Gdxj0OYiHes="
  scale: 0.0010438159
---

Я думаю самая главная ошибка - между креслом и клавиатурой, но если разбирать больше чем "не заметил" и предположить что новички не совсем знают о критических ошибках которые могут вызвать серъёзные последствия типа потери данных, вызова инородного кода, недоступность сервиса или кражи данных, то чёрный список выстроится следующим образом:

<!-- truncate -->

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](http://cwe.mitre.org/top25/)"
