PHP OpenID ne fonctionne pas avec Google / Yahoo et Fix 'hacks de ce ... sont-ils sûrs?
-
27-09-2019 - |
Question
Je l'ai expérimenté avec OpenID, et ont mis en place une page web exemple pour accéder à mon compte en utilisant OpenID. J'utilise le Php bibliothèque par JanRain qu'OpenID et il ne fonctionnait pas avec mon Google Compte. Un peu de recherche m'a conduit à cette question , ce qui suggère que le problème est que Google utilise https
et ...
... il est probable que le programme d'installation pour faire des requêtes HTTPS est foireuse sur votre serveur PHP. Assurez-vous que vous avez le paquet ca-certificates installé.
Dans le même fil, des liens de quelqu'un à leur version piratée de la bibliothèque que je l'ai utilisé et déployé avec mon compte Google avec succès. D'autres questions ont d'autres personnalisations pour contourner des problèmes similaires ( PHP-OpenID de Google JanRain et / Yahoo , php-openID ne fonctionne pas avec Yahoo! , < a href = "https://stackoverflow.com/questions/1183788/example-usage-of-ax-in-php-openid/2612816"> Exemple d'utilisation de AX en PHP ... OpenID)
Je ne suis pas trop chaud sur la sécurité, donc je demande; ne sait quiconque d'une raison de ne pas utiliser ces versions piratées?
La bibliothèque d'origine ont tout imperfection ces hacks fixer par la conception, et donc le hack est une vulnérabilité de sécurité potentielle?
Y at-il un crypto-ifier qualifié là-bas qui a regardé l'une de ces solutions et gone "Par la barbe de David Chaum! NON !! "
Si oui - et je ne faut donc pas utiliser ces hacks - comment pourrais-je vérifier que je « ai le paquet ca-certificats installé »
La solution
Voici ce que l'auteur d'une de ces versions « piraté » a écrit:
En particulier CURLOPT_SSL_VERIFYPEER et CURLOPT_SSL_VERIFYHOST sont vraies par default: Je les ai mis à faux et travaillé pour la page de test!
L'effet qui a est à peu près tout avantage nier la sécurité offerte en utilisant le protocole HTTPS. La principale raison HTTPS est utile dans OpenID est qu'il protège contre un homme-in-the-middle, à savoir certains poisons mauvais gars cache DNS pour envoyer toutes les demandes de google.com
à bad-guys.example
. Avec correctement configuré HTTPS, vous souhaitez vérifier le certificat sur la connexion, savoir qu'il était pas de Google, et dites: « Je ne vais pas croire tout ce que vous dites, bad-guys
! »
À moins, bien sûr, vous ne vérifiez pas tous les certificats (vous définissez toutes les options de SSL_VERIFY
à false
), auquel cas votre serveur croire tout ce que dit bad-guys
comme si elle était le véritable fournisseur Google. Vous pouvez imaginer à quel point cela pourrait être mauvais.
Maintenant, franchement, ce n'est pas le pire choix que vous pourriez faire, parce que c'est pas pire que d'utiliser simplement HTTP, que beaucoup de gens le font de toute façon. Vous n'êtes plus qu'à forge certificats SSL . De toute façon, il nécessite quelqu'un d'attaquer la connexion entre votre serveur et Google, qui est généralement plus difficile que d'attaquer la connexion entre l'ordinateur portable de l'utilisateur dans le café et votre serveur.
Mais encore, beaucoup mieux de fixer réellement votre configuration SSL PHP ou gondolé. Ou si vous n'êtes pas, prévenez vos utilisateurs de ce lors de leur inscription avec des identifiants HTTPS, afin qu'ils puissent choisir s'ils veulent vraiment utiliser qu'OpenID avec votre site.
Ce qui nous amène à votre deuxième question. Je pense, ne sachant rien sur quelle plate-forme serveur que vous utilisez, la meilleure chose que je peux faire est de vous créer un lien vers la page Curl docs sur les certificats SSL ; voir la section qui dit « obtenir un meilleur / différent / plus récent paquet CA cert! »
Autres conseils
De l'article de Wikipedia sur autorité de certification :
Une autorité de certification délivre des certificats numériques qui contiennent une clé publique et l'identité du propriétaire. Lorsqu'un utilisateur tente-final d'accéder à une URL inconnue, le navigateur Web (par exemple Mozilla Firefox et Microsoft Internet Explorer) communiquera avec l'autorité de certification pour confirmer la clé publique de l'URL.
... de sorte que le certificat CA est un certificat de clé publique utilisé pour communiquer sur https://
. Votre serveur doit avoir des certificats CA sur le système de fichiers quelque part. Sinon, vous devrez télécharger vous-même le certificat CA et régler la constante de CURLOPT_CAINFO
pour pointer vers son emplacement. Voir cet article .