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