Проверить, если 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. Это означает, что открытый ключ будет виден всем.
Теперь мой вопрос:
Это хорошая идея? Как это может быть сломано? Это излишне? Существуют ли более простые способы (например, использовать какой-либо алгоритм контрольной суммы)?
На это ответили в кросс-посте на бирже безопасности