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