Проверить, если URL идет из надежного источника

Мы работаем над страницей перенаправления для наших мобильных приложений.

Пользователи могут перейти на страницу, например: https://mobileredirect.our-app.com/?target=https://clientdomain.com/some_resource

Мобильные приложения на iOS и Adroid могут перехватывать домен "mobileredirect.our-app.com", если он установлен. Если не установлен, браузер откроется и перенаправит браузер в клиентский домен.

Это содержит очевидную проблему. Любой может поместить любой домен в схему, и это станет вектором атаки. Я хотел бы иметь возможность проверить, действительно ли URL поступает из надежного источника. Мы должны сделать это таким образом, так как мы не контролируем, какие домены могут использовать наше мобильное приложение.

В идеале я хотел бы сделать это в браузере, без необходимости в сервере.

Я думал об использовании библиотеки типа simple-crypt, используя асимметричную операцию. Доверенные серверы будут иметь закрытый ключ, они будут шифровать URL-адрес, и в итоге он будет выглядеть следующим образом: https://mobileredirect.our-app.com/?target=ENCRYPTED_URL. Клиенты (мобильные приложения и веб-сайт) будут содержать открытый ключ для расшифровки URL. Это означает, что открытый ключ будет виден всем.

Теперь мой вопрос:

Это хорошая идея? Как это может быть сломано? Это излишне? Существуют ли более простые способы (например, использовать какой-либо алгоритм контрольной суммы)?

На это ответили в кросс-посте на бирже безопасности

0 ответов

Другие вопросы по тегам