Я экспериментировал с OpenID и создал образец веб-страницы для доступа, используя мою учетную запись OpenID. Я использую библиотеку OpenID Php от Janrain, и она не работала с моей учетной записью Google. Небольшое исследование привело меня к этому вопросу , и это говорит о том, что Google использует https
и …
… скорее всего, установка для запросов HTTPS будет запущена на вашем сервере PHP. Убедитесь, что у вас установлен пакет ca-сертификатов.
- SQL-инъекция, которая распространяется вокруг mysql_real_escape_string ()
- Что делает eval на base64 закодированной переменной $ _POST ?
- Безопасное всплывающее окно возможно?
- Ориентированный на производительность способ защиты файлов на уровне PHP?
- Почему файлы приложения CodeIgniter в папке public_html?
В том же потоке кто-то ссылается на свою взломанную версию библиотеки, которую я развернул и успешно использовал с моей учетной записью Google. Другие вопросы имеют другие настройки, чтобы обойти похожие проблемы ( PHP-OpenID от Janrain и Google / Yahoo , php-openID не работает с Yahoo!, пример использования AX в PHP OpenID …)
Я не слишком горячий в безопасности, поэтому я спрашиваю; кто-нибудь знает причину не использовать эти взломанные версии?
Есть ли у исходной библиотеки какой-то недостаток, который эти хаки исправляют по дизайну, и поэтому взлом – потенциальная уязвимость безопасности?
Есть ли квалифицированный крипто-исьер, который посмотрел на любое из этих решений и ушел «Борода Дэвида Шаума! НЕТ! »
Если это так – и поэтому я не должен использовать какой-либо из этих хаков – как я могу проверить, что у меня «установлен пакет ca-сертификатов»?
Вот что написал автор одной из этих «взломанных» версий:
В частности, CURLOPT_SSL_VERIFYPEER и CURLOPT_SSL_VERIFYHOST истинны по умолчанию: я устанавливаю их в false и работает на тестовой странице!
Эффект, который есть, в значительной степени отрицает преимущества безопасности, предлагаемые с помощью 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-сертификат!»
Из статьи в Википедии о Центре сертификации :
ЦС выпускает цифровые сертификаты, содержащие открытый ключ и личность владельца. Когда конечный пользователь пытается получить доступ к неизвестному URL-адресу, веб-браузер (например, Mozilla Firefox и Microsoft Internet Explorer) свяжется с CA, чтобы подтвердить открытый ключ URL-адреса.
… поэтому сертификат CA является сертификатом открытого ключа, используемым для связи через https://
. Ваш сервер должен иметь CA-сертификаты в файловой системе где-нибудь. Если нет, вам придется загрузить CA Certificate самостоятельно и установить константу CURLOPT_CAINFO
чтобы указать на ее местоположение. См. Эту статью .
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
[…] Кто-нибудь знает причину не использовать эти взломанные версии?
Кроме того, что они взломали версии, которые, скорее всего, не документированы и не имеют гарантии относительно их поведения?
Я не могу ответить конкретно, но при работе с модулями, у которых были бы быстрые исправления и обходные решения, особенно когда вы имеете дело с авторизацией и безопасностью, должно быть несколько предупреждающих огней. Я думаю, что лучшим советом будет " Используйте на свой страх и риск! »
Я уверен, что кто-то, у кого больше знаний по этой теме, скоро прибудет с более обоснованным ответом.