4

私は OpenID を試しており、OpenID アカウントを使用してアクセスするサンプル Web ページをセットアップしました。Janrain のPhp OpenID ライブラリを使用していますが、Google アカウントでは機能しませんでした。少し調査した結果、この質問にたどり着きました。これは、Google が使用していることが問題であることを示唆していますhttps...

... PHP サーバーで HTTPS リクエストを作成するためのセットアップが中断されている可能性があります。ca-certificates パッケージがインストールされていることを確認してください。

同じスレッドで、誰かがハッキングされたバージョンのライブラリにリンクしています。これは私が展開し、Google アカウントで正常に使用しています。他の質問には、同様の問題を回避するための他のカスタマイズがあります ( Janrain の PHP-OpenID と Google/Yahoo、 php-openID は Yahoo!では機能しません、PHP OpenID での AX の使用例...)

私はセキュリティにあまり熱心ではないので、質問します。これらのハッキングされたバージョンを使用しない理由を知っている人はいますか?

元のライブラリには、これらのハッキングが意図的に修正する欠点があり、したがってハックは潜在的なセキュリティの脆弱性になりますか?

これらのソリューションのいずれかを見て、「デビッド・チャウムのひげによって!いいえ!!」と行った資格のある暗号化者がそこにいますか?

もしそうなら - したがって、これらのハックを使用するべきではありません - 「ca-certificates パッケージがインストールされている」ことを確認するにはどうすればよいですか?

4

3 に答える 3

6

これらの「ハッキングされた」バージョンの1つの作者が書いたものは次のとおりです。

特に、CURLOPT_SSL_VERIFYPEER と CURLOPT_SSL_VERIFYHOST はデフォルトで true です。それらを false に設定すると、テスト ページで機能しました。

その効果は、HTTPS を使用することによって提供されるセキュリティ上の利点をほとんど無効にすることです。HTTPS が OpenID で役立つ主な理由は、中間者攻撃を防ぐためです。つまり、悪者が DNS キャッシュをポイズニングして、すべてのgoogle.comリクエストをに送信しますbad-guys.example。適切に構成された HTTPS を使用すると、接続で証明書を確認し、それが Google からのものではないことがわかり、「あなたの言うことは信じられませんbad-guys!」と言うでしょう。

もちろん、証明書を検証しない限り (すべてのSSL_VERIFYオプションを に設定します)、サーバーはすべてが本物の Google プロバイダーであるかのようにfalse信じます。bad-guysそれがどれほど悪いかは想像できます。

率直に言って、これは最悪の選択ではありません。なぜなら、多くの人が HTTP を使用するよりも悪くないからです。HTTPS レベルのセキュリティを提供していないのに提供しているとほのめかすのは、ユーザーに嘘をついているにすぎません。

また、DNS ベースの攻撃を行うのがいかに簡単か、または行うのがいかに簡単でないか、またはSSL 証明書を偽造するのがいかに簡単かについて、多くの情報があります。いずれにせよ、誰かがあなたのサーバーと Google の間の接続を攻撃する必要がありますが、これは通常、コーヒー ショップにいるユーザーのラップトップとあなたのサーバーの間の接続を攻撃するよりも困難です。

それでも、PHP または CURL の SSL 構成を実際に修正する方がはるかに優れています。または、そうでない場合は、ユーザーが HTTPS 識別子でサインアップするときにそのことを警告して、サイトでその OpenID を本当に使用するかどうかをユーザーが選択できるようにします。

これが 2 番目の質問につながります。あなたが使用しているサーバー プラットフォームについて何も知らないと思いますが、私にできる最善の方法は、SSL 証明書に関する Curl ドキュメントにリンクすることです。「より良い/異なる/新しい CA 証明書バンドルを入手してください!」というセクションを参照してください。

于 2010-06-19T16:39:03.650 に答える
0

Certificate Authorityに関するウィキペディアの記事から:

CA は、公開鍵と所有者の ID を含むデジタル証明書を発行します。エンド ユーザーが不明な URL にアクセスしようとすると、Web ブラウザ (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/

于 2010-06-21T19:53:51.283 に答える
-1

[...]これらのハッキングされたバージョンを使用しない理由を知っている人はいますか?

それらがハッキングされたバージョンであるという事実に加えて、それらは文書化されていない可能性が高く、それらの動作について保証がありませんか?

具体的にはお答えできませんが、迅速な修正と回避策が適用されたモジュールを使用している場合、特に認証とセキュリティを扱っている場合は、警告灯が点滅するはずです。最善のアドバイスは「自己責任で使用してください!」

このトピックについてより多くの知識を持っている人が、より多くの情報に基づいた回答を持ってすぐに到着すると確信しています。

于 2010-06-15T18:02:18.203 に答える