Большая часть потенциального риска, связанного с развертыванием веб-приложений, исходит из кода в каждом приложении. Ограничивая функции, которые использует ваше приложение, и выполняя перечисленные здесь методы безопасного кодирования, вы можете уменьшить потенциальный риск для ваших приложений.
Если ваше приложение требует доступа к конфиденциальным данным или выполняет потенциально опасные действия, можно рассмотреть возможность реализации собственных схем аутентификации и авторизации. Обратитесь за консультацией к группе сетевой безопасности.
eval()
MATLAB®
eval()
функция превращает текстовые строки в команды. Эта мощная функция позволяет пользователям выполнять произвольный код MATLAB. Этот код может, в свою очередь, включать выполнение любой установленной программы, которая доступна низкопривилегированному пользователю, или доступ к любому файлу или данным, к которым имеют доступ низкопривилегированные пользователи. Приложения, созданные для веб приложения и доступа, не должны содержать вызовы eval()
. Способы устранения Альтернативных вариантов функции eval см. в eval()
из кода веб- приложения. Опора на санитарную обработку входных параметров может помочь снизить риск любых косвенных вызовов eval()
. См. Раздел «Санирование входа» (MATLAB Web App Server).
Используйте меню, ползунки, циферблаты и кнопки вместо редактируемых текстовых полей в пользовательском интерфейсе приложения. В сложение к улучшению пользовательского опыта эта практика ограничивает типы входа, которые могут предоставить пользователи, и риски, которые могут представлять такие входы.
Эксперту по безопасности предоставленные пользователем данные считаются ненадежными, поскольку вход является общим вектором атак для хакеров. Если ваше приложение должно принять произвольный ввод, приложение должно тщательно изучить вход для потенциальных атак инъекций кода - текста, который содержит специальные символы, которые заставляют приложение интерпретировать вход как команды, а не данные.
В MATLAB атаки инъекций кода, скорее всего, будут направлены против XML, JSON, SQL и других аналогичных типов структурированного входа. Если ваше приложение принимает структурированный вход, обратитесь к ИТ-специалистам или группе безопасности за предложениями о том, как санировать этот вход. Никогда не стоит позволять пользователю непосредственно вводить любой тип кода (например, MATLAB, Java®, или JavaScript®) для немедленной оценки.
Чтение данных из файлов подвергает приложение тому же типу риска, что и сбор интерактивного пользовательского ввода. Применяются те же контрмеры. Кроме того, можно защитить файлы данных только для чтения от подделки криптографически безопасным алгоритмом хеширования в цифровые файлы отпечатков пальцев.
Ограничение вашего приложения доступом только для чтения значительно снижает потенциальный риск, связанный с вашим приложением. Если необходимо записать в файловую систему, помните, что сервер запускает несколько копий вашего приложения одновременно, если к нему одновременно обращаются многие пользователи. Вы должны управлять одновременными записями либо путем использования сгенерированных во время выполнения уникальных имен файлов, либо путем использования базы данных, которая обычно может обрабатывать несколько одновременных обращений. Если одновременная запись не управляется должным образом, может произойти повреждение данных.
Если ваше приложение включает файлы MATLAB, общие библиотеки, классы Java или любой другой тип кода, разработанный третьей стороной, вы должны убедиться, что код свободен от вирусов, червей, троянских коней и других веб- векторов атак и инфильтрации. Вы можете обсудить эту проблему с автором кода и вашим ИТ-персоналом и сотрудниками службы безопасности. В случае двоичных файлов или классов Java рассмотрите запуск антивирусного сканера или другого программного обеспечения безопасности на коде, прежде чем включать его в развернутое приложение.
Один из способов уменьшить воздействие - ограничить время работы приложения только теми временами, когда это необходимо. Например, не запускайте его постоянно с рабочего стола.