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