Уязвимости, с точки зрения кодера, грубо говоря поделить на 4 основных категории:
1) Уязвимости в ПО сервера.
Даже при условии, что Вы постоянно обновляетесь, сервер правильно сконфигурирован и защищен, его ПО не застраховано от ошибок. Тут уже мы ничего поделать не можем, надо просто дождаться официальных обновлений.
2) Уязвимости из-за кривой настройки сервера.
Тут уже надо оторвать кривые руки системному администратору и возможно нанять нового.
3) Уязвимости в коде (из-за криворукости, или невнимательности).
Именно подобными уязвимостями очень любят пользоваться хакеры. Дыр может быть куча и самых разнообразных. Надо стараться их не допускать.
4) Уязвимость из-за ошибки в бизнес-логике.
Бывает так, что код красивый, написан правильно, соблюдены все требования по безопасности. Но в сложных системах обычно и сложная бизнес-логика и вполне возможно что-то не учесть.
---
1 и 2 пункты к кодеру отношения не имеют, но часто портят жизнь.