Журнал InfoWorld составил список самых популярных ошибок, которые совершают программисты при написании кода. По мнению экспертов, именно благодаря этим ошибкам злоумышленники получают несанкционированный доступ в систему, могут скопировать учётные данные пользователей и т.д.
Итак, вот список главных ошибок.
1. Вы доверяете коду неизвестного происхождения.
В процессе написания программы почти каждый разработчик копирует фрагменты кода со стороны. Часто бывает так, что сторонние библиотеки не обеспечивают достаточного уровня безопасности. Последний пример такого рода — библиотека OpenSSL, в которой несколько месяцев назад обнаружили критическую уязвимость.
Что делать в такой ситуации? Конечно, писать всё с нуля — не выход, но нужно, по крайней мере, более тщательно относиться к заимствованию кода.
2. Указание паролей открытым текстом.
Часто разработчики в целях тестирования указывают пароли для прямого доступа к сервису, а потом забывают удалить их. Такие пароли, фактически, являются бэкдорами. Они предоставляют неограниченный доступ в систему, и их могут узнать посторонние люди.
3. Отсутствие проверки входящих значений.
SQL-инъекции и удалённые выполнение кода — самые популярные и опасные уязвимости нашего времени. Такая ситуация возникла, потому что веб-приложения доверяют любым данным, полученным из внешнего источника через веб-форму. Манипулируя содержимым SQL-запроса, злоумышленник может заставить СУБД выполнить действие, которое разработчики не предусмотрели: например, скопировать все записи с именами пользователей и паролями.
4. Отсутствие защиты данных.
Отсутствие шифрования данных на сервере — одна из самых распространённых ошибок разработчиков. Нужно защищать всю чувствительную информацию: имена, пароли, персональные идентификаторы пользователей и проч. Простого использования шифрования недостаточно, нужно ещё грамотно его реализовать.
5. Игнорирование сетевого уровня OSI 8.
В стандарте OSI такого уровня не существует, но его часто упоминают, имея в виду людей, которые будут использовать ваше программное обеспечение. Нужно понимать, что зачастую взлом ПО осуществляется не через баги, а через людей, которые пользуются вашей программой. Речь идёт о социальной инженерии. Разработчик должен сделать пользовательский интерфейс максимально простым и понятным, чтобы никого нельзя было ввести в заблуждение.