PHP OpenID не работает с Google / Yahoo и «Hacks» исправить это ... они в безопасности?

StackOverflow https://stackoverflow.com/questions/3047688

Вопрос

Я экспериментировал с OpenID и настроил образец веб-страницы для доступа к моей учетной записи OpenID. Я использую PHP OpenID Библиотека от Janrain И это не работало с моим учетной записью Google. Немного исследований привело меня к этот вопрос, что говорит о проблеме в том, что использует Google https и...

... Скорее всего, установка для создания запросов HTTPS находится на вашем PHP-сервере. Убедитесь, что у вас установлен пакет CA-сертификаты.

В той же ниве кто-то ссылается на их взломанная версия библиотеки который я развернул и использовал с моим учетной записью Google успешно. Другие вопросы имеют другие настройки, чтобы обойти аналогичные проблемы (PHP-OpenID Janrain и Google / Yahoo, PHP-OpenID не работает с Yahoo!, Пример использования AX в PHP OpenID...)

Я не слишком жарко в безопасности, поэтому я спрашиваю; Кто-нибудь знает по причине не использовать эти взломанные версии?

У оригинальной библиотеки есть какие-либо недостатки этих хаки исправления по дизайну, и поэтому взлом является потенциальной уязвимостью безопасности?

Есть ли квалифицированный крипто-Ifier, который посмотрел на любую из этих решений и ушел «Борода Дэвида Чаума! НЕТ!!"

Если так - и я поэтому не должен использовать какие-либо из этих хайков - как бы я проверить, что у меня установлено пакет CA-сертификаты?

Это было полезно?

Решение

Вот что автор одного из этих «взломанных» версий писал:

В частности CURLOPT_SSL_VERIFYPEER и CURLOPT_SSL_VERIFYHOST передаются по умолчанию: я устанавливаю их в FALSE, и она работала на тестовой странице!

Эффект, который имеет в значительной степени отрицать любые преимущества безопасности, предлагаемые с помощью HTTPS. Основной причиной HTTPS полезен в OpenID, заключается в том, что охранники против атаки человека в среднем, то есть некоторые плохого парня ядайков вашего DNS-кэша для отправки всех google.com просит bad-guys.example. Отказ With properly configured HTTPS, you'd verify the certificate on the connection, find out it wasn't from Google, and say "I'm not going to believe anything you say, bad-guys!"

Если, конечно, вы не проверяете какие-либо сертификаты (вы устанавливаете все SSL_VERIFY Варианты к false), в этом случае ваш сервер верит всему bad-guys говорит, как будто это был настоящий поставщик Google. Вы можете себе представить, как это может быть плохо.

Теперь, честно говоря, это не худший Выбор, который вы могли бы сделать, потому что это не хуже, чем просто используя HTTP, которое много людей делают все равно. Ты просто лгать своим пользователям Если вы подразумеваете, что вы предоставляете безопасность уровня HTTPS, когда вы нет.

И там много информации о том, насколько легко это или не делает атаку на основе DNS, или насколько легко это Forge SSL-сертификаты. Отказ В любом случае, это требует от кого-то, чтобы атаковать связь между вашим сервером и Google, который в целом Сложнее, чем атаковать соединение между ноутбуком пользователя в кафе и сервере.

Но все же, намного лучше, чтобы на самом деле на самом деле исправить вашу настройку PHP или Curl SSL. Или если вы этого не сделаете, предупредите своих пользователей, когда они зарегистрируются с идентификаторами HTTPS, поэтому они могут выбрать, если они действительно хотят использовать эту OpenID с вашим сайтом.

Который ведет к вашему второму вопросу. Я думаю, ничего не зная о каком сервере платформы, которую вы используете, лучшее, что я могу сделать, это связать вас с Curl Docs на SSL-сертификаты; Смотрите раздел, который говорит: «Получите лучшее / другое / новое CA CATLE!»

Другие советы

Из статьи Википедии на Центр сертификации:

CA выпускает цифровые сертификаты, которые содержат открытый ключ и идентичность владельца. Когда конечный пользователь пытается получить доступ к неизвестному URL, веб-браузер (например, Mozilla Firefox и Microsoft Internet Explorer) свяжутся с CA для подтверждения открытого ключа URL.

... так что сертификат CA используется для общения https://. Отказ Ваш сервер должен иметь сертификаты CA в файловой системе где-то. Если нет, вам придется загрузить сертификат CA и установить CURLOPT_CAINFO постоянна, чтобы указать на его местоположение. Смотрите эту статью.

http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

...] Кто-нибудь знает по причине не использовать эти взломанные версии?

Помимо того, что они взломают версии, которые, скорее всего, недокументированы и не имеют никакой гарантии относительно их поведения?

Я не могу ответить специально, но он должен быть некоторые предупреждающие огни, когда вы работаете с модулями, которые имели быстрые исправления и обходные пути, особенно когда вы имеете дело с авторизацией и безопасностью .. Я думаю, что лучший совет будет » Использовать в собственном риске! »

Я уверен, что кто-то с большим знанием на тему будет достаточно скоро с более информированным ответом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top