PHP OpenID funktioniert nicht mit Google / Yahoo und 'Hacks' fix it ... sind sie sicher?
-
27-09-2019 - |
Frage
Ich habe mit OpenID experimentiert und habe eine Probe Webseite Zugriff über mein OpenID-Konto einrichten. Ich bin mit dem Php OpenID Bibliothek von JanRain und es funktionierte nicht mit meinem Google Konto. Ein wenig Recherche führte mich diese Frage zu , die das Problem legt nahe, dass Google verwendet https
und ...
... es ist wahrscheinlich, dass die Einrichtung für die Herstellung von HTTPS-Anfragen wird borked auf PHP-Server. Überprüfen Sie, ob Sie die CA-Zertifikate-Paket installiert.
Im selben Thread, jemand Links zu ihrem gehackte Version der Bibliothek , die ich im Einsatz und habe mit meinem Google-Konto erfolgreich eingesetzt. Andere Fragen haben andere Anpassungen zu umgehen ähnliche Probleme ( JanRain PHP-OpenID und Google / Yahoo , php-openID funktioniert nicht mit Yahoo! , < a href = "https://stackoverflow.com/questions/1183788/example-usage-of-ax-in-php-openid/2612816"> Beispiel für die Verwendung von AX in PHP OpenID ...)
Ich bin nicht zu heiß auf Sicherheit, so frage ich; Kennt jemand einen Grund, nicht diese gehackt Versionen verwenden?
Ist die ursprüngliche Bibliothek hat, was Manko diese Hacks beheben, indem Design und damit der Hack ist eine potenzielle Sicherheitslücke?
Gibt es eine qualifizierte Krypto ifier da draußen, die auf jeder dieser Lösungen und weg geschaut hat „von David Chaum Bart! NEIN !! “
Wenn ja - und ich deshalb keine dieser Hacks verwenden sollte - wie würde ich prüfen, ob ich „habe das ca-Zertifikate Paket installiert“
Lösung
Hier ist, was der Autor einer dieser „gehackt“ Versionen geschrieben:
Insbesondere CURLOPT_SSL_VERIFYPEER und CURLOPT_SSL_VERIFYHOST wahr sind durch Standard: Ich habe sie falsch und es arbeitete für die Testseite!
Der Effekt, der hat ziemlich viel zu jeder Sicherheitsvorteil durch Verwendung von HTTPS angeboten negieren. Der primäre Grund HTTPS ist nützlich bei der OpenID ist, dass es schützt vor Man-in-the-Middle-Angriff, das heißt einige schlechten Kerle Gifte Ihre DNS-Cache alle google.com
Anfragen an bad-guys.example
zu senden. Mit richtig HTTPS konfiguriert, dann würden Sie das Zertifikat auf die Verbindung überprüfen, herauszufinden, dass es nicht von Google war, und sagen: „Ich werde nicht alles glauben Sie sagen, bad-guys
!“
Es sei denn natürlich, Sie überprüfen, keine Zertifikate (Sie setzen alle SSL_VERIFY
Optionen false
), wobei in diesem Fall der Server wird alles bad-guys
glauben sagt, als ob es der eigentliche Google-Provider waren. Sie können sich vorstellen, wie so schlimm sein könnte.
Nun, ehrlich gesagt, ist dies nicht der Schlimmste Wahl, die Sie machen können, weil es nicht schlechter ist als nur über HTTP, die eine Menge Leute ohnehin tun. Sie sind nur Schmiede SSL-Zertifikate . So oder so, tut es jemand erfordert die Verbindung zwischen Ihrem Server und Google angreifen, das ist im Allgemeinen härter als Angriff auf die Verbindung zwischen dem Laptop des Benutzers in dem Coffee-Shop und den Server.
Aber noch viel besser, um tatsächlich zu reparieren Ihre PHP oder ROTATION SSL-Konfiguration. Oder, wenn Sie nicht, warnen die Benutzer von, dass, wenn sie sich anmelden mit HTTPS-IDs, so dass sie können wählen, ob sie wirklich mit Ihrer Website, dass OpenID verwenden möchten.
Was zu Ihrer zweiten Frage führt. Ich denke, nichts zu wissen, über die Server-Plattform Sie verwenden, das Beste, was ich tun kann, ist, dass Sie auf die Curl-docs auf SSL-Zertifikate ; siehe den Abschnitt, der sagt: „Holen Sie sich ein besser / anders / modernere CA cert Bundle!“
Andere Tipps
Aus dem Wikipedia-Artikel über Certificate Authority :
Eine CA stellt digitale Zertifikate, die einen öffentlichen Schlüssel und die Identität des Inhabers enthalten. Wenn ein Endbenutzer versucht eine unbekannte URL zuzugreifen, wird der Web-Browser (zum Beispiel Mozilla Firefox und Microsoft Internet Explorer) die CA Kontakt mit dem öffentlichen Schlüssel der URL zu bestätigen.
... so ist das CA-Zertifikat ein Public Key-Zertifikat verwendet https://
zu kommunizieren . Ihr Server CA-Zertifikate haben auf dem Dateisystem irgendwo. Wenn nicht, werden Sie das CA-Zertifikat selbst herunterladen und stellen Sie die CURLOPT_CAINFO
konstant Punkt seiner Lage. See dieser Artikel .