Интерфейс ThingWorx REST API > Обновление метода запроса и фильтрация типа содержимого для защиты от CSRF
Обновление метода запроса и фильтрация типа содержимого для защиты от CSRF
Подделка межсайтовых запросов (CSRF, Cross-site request forgery) представляет собой осуществляемую через Интернет атаку путем отправки поддельных запросов от имени не знающей об этом жертвы. Если пользователь, проходящий в текущий момент проверку подлинности на сайте, оказался обманным путем вовлечен в передачу вредоносной команды, атакующий может отправить запрос изменения состояния с использованием учетных данных жертвы.
Дополнительные сведения см. по следующим ссылкам:
Общая защита от атак CSRF заключается в использовании синхронизированных лексем. Однако ThingWorx использует альтернативный подход и вместо этого пропускает все запросы через строгий фильтр типа содержимого. Этот подход является не менее надежным, но при этом более подходящим для реализаций, в которых не сохраняется состояние.
Обновление метода запроса
По умолчанию метод запроса нельзя изменить с помощью параметров запроса. Если приложение было разработано с использованием этих принципов, вы можете сделать следующее.
Удалите любой код, который может изменить метод GET на метод POST через параметры запроса. Это рекомендуемый оптимальный подход.
Задайте для опции Разрешить переключение методов запроса в конфигурации Подсистемы платформы значение true.
* 
Этот способ не является рекомендуемым, и необходимо осознавать, что, делая это, вы подвергаете реализацию или приложение угрозе потенциальной атаки CSRF.
Опция Разрешить переключение методов запроса устарела и будет удалена из будущих выпусков ThingWorx.
Фильтрация типа содержимого
Был реализован фильтр ContentTypeFilter, позволяющий проверить, является ли тип содержимого в заголовке запроса для всех методов POST, PUT и DELETE одним из следующих: application/json, application/xml или text/xml. Если в запросе используется составной тип содержимого multipart/form-data, будет проверен заголовок X-XSRF-TOKEN со значением TWX-XSRF-TOKEN-VALUE. Запросы с использованием составного типа содержимого предназначены для выгрузки файлов.
При выполнении выгрузок файлов в браузере должен применяться объект FormData.
* 
Сущность FormData недоступна в старых версиях браузеров (Internet Explorer 9 и более ранних); таким образом, если будет включен ContentTypeFilter, в этих браузерах выгрузка файлов будет недоступна (в том числе импорт сущностей и расширений).
* 
Опция Filter Content-Type в подсистеме платформы может быть выключена, но вы должны знать, что рискуете подвергнуть свою реализацию или приложение возможной атаке CSRF.
Опция Filter Content-Type устарела и будет удалена из будущих выпусков ThingWorx. После удаления администратор больше не сможет отключить фильтр типа содержимого.
Оптимальные методы защиты от CSRF
Чтобы обеспечить защиту от CSRF, выполните следующие инструкции.
При разработке новых приложений все мэшапы, создаваемые в Composer, находятся в безопасности. При использовании настраиваемого интерфейса пользователя, получающего доступ к ThingWorx через интерфейс REST API, убедитесь, что не будет использоваться запрос, который требует переключения метода.
При разработке новых расширений Java убедитесь, что все новые сервисы представлены в платформе аннотаций сервисов ThingWorx. Эта платформа отвечает за идентификацию, сопоставление и маршрутизацию всех входящих запросов к реализации сервиса. Все сервисы, создаваемые и представляемые с использованием аннотаций сервисов ThingWorx, будут защищены от CSRF.
В редких случаях, когда новый сервис должен быть создан в обход платформы аннотаций ThingWorx, следует убедиться, что этот сервис будет реагировать только на методы GET, POST, PUT или DELETE.
См. также
Было ли это полезно?