Внедрение кода — это злонамеренное внедрение или введение кода в приложение. Введенный или внедренный код способен нарушить целостность базы данных и / или поставить под угрозу свойства конфиденциальности, безопасность и даже правильность данных. Он также может похищать данные и / или обходить контроль доступа и аутентификации. Атаки внедрения кода могут мешать приложениям, которые зависят от пользовательского ввода для выполнения.
Внедрение кода отличается от внедрения команд . Здесь злоумышленник ограничен только функциональностью самого внедренного языка. Например, если злоумышленник может внедрить код PHP в приложение и выполнить его, он ограничен только возможностями PHP.
Уязвимости внедрения кода варьируются от простых до труднодоступных. Многие решения были разработаны для предотвращения этих типов атак внедрения кода, как для приложений, так и для области архитектуры. Некоторые примеры включают проверку ввода, параметризацию, установку привилегий для различных действий, добавление дополнительного уровня защиты и другие.
Пример:
Когда разработчик использует функцию PHP eval () и передает ей недоверенные данные, которые злоумышленник может изменить, внедрение кода может быть возможным.
В приведенном ниже примере показан опасный способ использования функции eval ():
|
Поскольку проверка ввода не выполняется, приведенный выше код уязвим для атаки внедрения кода.
Например:
/index.php?arg=1; phpinfo()
Выше покажет всю информацию php.
Используя подобные ошибки, злоумышленник может захотеть выполнить системные команды. В этом случае ошибка внедрения кода также может быть использована для введения команды, например:
/index.php?arg=1; system('id')
Это скажет идентификаторы процесса.
uid = 33 (www-data) gid = 33 (www-data) groups = 33 (www-data)
смягчение
В идеале разработчик должен использовать существующий API для своего языка. Например (Java): вместо того, чтобы использовать Runtime.exec () для выполнения команды «mail», используйте доступный Java API, расположенный по адресу javax.mail. *
Если такого доступного API не существует, разработчик должен очистить весь ввод для вредоносных символов. Реализация позитивной модели безопасности будет наиболее эффективной. Как правило, определить легальные символы намного проще, чем недопустимые.
Ссылка
https://en.wikipedia.org/wiki/Code_injection
https://www.cse.unr.edu/~mgunes/cpe401/cpe401sp11/student/CodeInjection.pptx
Эта статья предоставлена Акашем Шараном . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Базовое SQL-внедрение и смягчение последствий с примером
- Уязвимость командного ввода и смягчение
- Смягчение атаки SQL-инъекций с использованием подготовленных операторов (параметризованных запросов)
- Как использовать SQLMAP для тестирования веб-сайта на уязвимость SQL-инъекций
- Создание QR-кода для сайта
- Хакатон — думай, кодируй, твори
- Взлом Google Summer of Code 101
- Google Summer of Code Подготовка
- Как запустить код Python в Google Colab Laboratory
- Упаковка и публикация кода Python
- 7 советов, как написать чистый и лучший код в 2020 году
- Выполнение поиска Google с использованием кода Python
- 5 советов по обучению программированию — общие советы для программистов
- Как подготовиться к GSoC (Google Summer of Code) — Полное руководство
- Код Lex для замены слова другим словом в файле
0.00 (0%) 0 votes