Компьютерные ученые из университета Карнеги Меллона нашли способ безопасно использовать многочисленные языки программирования в коде одной и той же программы. Предложенный подход позволяет для каждой функции применять наиболее оптимальный язык (SQL для опроса баз данных или HTML для конструированию веб-страниц) и в то же время защищает от атак внедрением кода (code injection) — одной из наиболее серьезных угроз безопасности сегодняшних веб-приложений.

Развитием проекта под названием Wyvern занимается группа, возглавляемая Джонатаном Олдричем (Jonathan Aldrich), адъюнкт-профессором Института программных исследований (ISR). Их статья «Safely Composable Type-Specific Languages» была недавно отмечена наградой Европейской конференции по объектно-ориентированному программированию в Уппсале (Швеция).

На основании типа данных, которыми манипулирует программист, Wyvern определяет какой «суб-язык» будет использоваться в программе. Тип распознается через формат данных, например алфавитно-цифровые символы, числа с плавающей запятой или более сложные структуры данных (веб-страницы, запросы к БД).

«Wyvern напоминает опытного посредника, который способен плавно переключаться между языками, обеспечивая совместную работу международного коллектива, — комментирует Олдрич. — Такой человек может оказаться очень эффективным, и, аналогично, я полагаю наш новый подход может оказать большое воздействие на построение программных систем».

Включение кода на другом языке, например, фрагментов SQL или JavaScript в HTML-страницу, это распространенный прием программирования. Однако Wyvern, по мнению Олдрича, позволяет упростить и автоматизировать эту процедуру, избегая при этом обходных путей, которые могут представлять риск для безопасности.

Одним из таких проблематичных обходных путей является использование последовательностей символов для формирования в программе команд на посторонних языках. Неосторожная реализация такого метода делает компьютеры уязвимыми к межсайтовым скриптовым атакам и к внедрению SQL. В последнем случае, например, злоумышленник может через форму ввода пароля на веб-сайте ввести команду DROP TABLE, стирающую базу данных.

«Wyvern делает использование цепочек символов для этих целей ненужным и, таким образом устраняет все виды уязвимостей от внедрения», — заявил Олдрич.

Гибкая концепция Wyvern предусматривает не только использование ряда предопределенных языков, но и добавление новых, и освобождает программистов от заботы о компоновке кода.

Хотя этот проект еще далек от завершения, исходники Wyvern уже открыты для всех желающих поэкспериментировать с ними.
__________________________________________________________________________________________________________________________________________________________
ko.com.ua