PHP OpenID не работает с Google / Yahoo и «хаки» это исправляют ... они безопасны? - PullRequest
4 голосов
/ 15 июня 2010

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

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

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

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

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

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

Если это так - и поэтому я не должен использовать ни один из этих хаков - как я могу проверить, что у меня «установлен пакет ca-Certificates»?

Ответы [ 3 ]

6 голосов
/ 19 июня 2010

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

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

Эффект, который имеет место, сводит на нет все преимущества безопасности, предлагаемые при использовании HTTPS. Основная причина, по которой HTTPS полезен в OpenID, заключается в том, что он защищает от атаки «человек посередине», т. Е. Какой-то плохой парень отравляет ваш DNS-кеш для отправки всех google.com запросов на bad-guys.example. При правильно настроенном HTTPS вы проверяете сертификат в соединении, узнаете, что он не от Google, и говорите: «Я не собираюсь верить тому, что вы говорите, bad-guys

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

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

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

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

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

0 голосов
/ 21 июня 2010

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

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

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

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

0 голосов
/ 15 июня 2010

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

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

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

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

...