Да и нет. Нет, вам не следует доверять всему, что вы получаете по телефону, включая openid.op_endpoint
. Но если вы используете защищенную библиотеку OpenID, этот параметр проверяется до того, как пользователю будет разрешено войти на ваш сайт. Спецификация OpenID фактически должна обеспечить способ проверки этого и других параметров, и без проверки протокол аутентификации хуже, чем бесполезный.
Итак, убедитесь, что ваша библиотека приличная. Тогда да, доверьтесь параметру openid.op_endpoint. Но не тот, который вы получаете из строки запроса самостоятельно, поскольку сообщения OpenID могут быть отправлены вам, и параметр не будет отображаться в строке запроса. Хуже того, если бы вы проверяли строку запроса в этом случае, вы, вероятно, открыли бы себе дыру в безопасности, где злоумышленник может добавить этот параметр в строку запроса и обмануть вас, соблюдая требования библиотеки. Поэтому лучше всего использовать API, предоставляемый библиотекой, чтобы выяснить, какова конечная точка OP.
Что касается связывания учетных записей таким способом, то это хороший подход, поскольку Google отправляет только те адреса электронной почты, которые, как он знает, действительно контролируются пользователем. Если вы уже потребовали, чтобы ваш пользователь прошел через этап проверки электронной почты, то привязка учетной записи безопасна. Но если адрес электронной почты, который вы указали для пользователя, не был подтвержден, вы не должны связывать учетные записи, основанные на этом совпадении, или я могу захватить чужую учетную запись, создав учетную запись с чужим адресом электронной почты, а затем ждать их войти в систему с помощью OpenID и теперь я могу войти в их аккаунт.